在程序中包含了类的声明,引用,并不能就认为是面向对象。面向对象是一种开发理念。面向对象和面向过程的核心区别是如何分配指责。

过程式编程表现为一系列命令和方法的连续调用,代码中含有很多的条件判断,关联度高。这种自顶向下的控制方式导致了重复和相互依赖的代码遍布于整个项目。面向对象,则将职责移交到专门的对象中,减少代码之间的相互联系。

过程式编程有一下缺点:

1、任何项目,需求是不断变化的,过程式编程,导致代码越来越繁杂,维护性差

2、代码冗余

3、代码阅读,维护,扩展都变得异常艰难。

面向对象编程,一般应该实现,封装,继承,多态。具体的是

1.职责

过程化的编码,控制代码的职责是判断语句。

面向对象的编码,父类的职责是提供规范,判断格式也只有一次,并且不考虑细节。

2.内聚

内聚是一个模块内部各成分之间相关程度的度量。如果组件职责清晰、分工明确,那么代码较为好维护;如果代码之间关联太广,则维护性较差。(因为你想修改某部分代码的同时,要修改相关代码)。

3.耦合

当系统各部分代码紧密绑在一起时,就会产生紧密耦合。高耦合使代码扩展和维护异常艰难,而低耦合基本都是分开的功能模块,维护和扩展都非常方便。

(备注: 高内聚=低耦合)

4、面向对象设计的4个规范

1、代码重复,如果有大量的代码重复,请放到父类或者公共类中去,提供调用。

2、一个类如果处理的功能太多,尽量进行分割,每个类最好保持独立性,在类抽取出来的时候还能单独使用

3、万能类,如果一个类实现了所有功能,请把它分成子类和父类,父类做规范,子类去实现

4、if语句,如果类中包含有大量的if语句,特别是一种条件判断在类中重复出现,就说明这个类需要拆分成多个类。

php面对对象设计,PHP对象与设计相关推荐

  1. 开发宝典:基于分布式对象的网游程序结构设计

    http://gamedev.csdn.net/page/41b61c4c-eaa9-4e5a-bf71-1f547d5e026e [编者按]目前,网游市场日趋激烈,每年新增的网游都有几十款之多.对于 ...

  2. 我翻译的一篇文章,OO设计中对象的创建和使用

    OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

  3. .Net开发笔记(十九) 创建一个可以可视化设计的对象

    阅读本篇博客之前需要了解VS窗体设计器的工作原理,详细可参见本系列博客(十).(十一).(十二).必须需要知道的一条结论就是:处于窗体设计器(Form Designer)中的任何组件(包含控件,下同) ...

  4. [从架构到设计]第二回:对象的旅行---对象和人,两个世界,一样情怀(转载)...

    [从架构到设计] 第二回:对象的旅行---对象和人,两个世界,一样情怀 发布日期:2007.9.3 作者:Anytao ©2007 Anytao.com ,原创作品,转贴请注明作者和出处. 对象和人, ...

  5. vs2010 设计视图中控件无法加载,提示未将对象设置到对象的实例。

    vs2010 设计视图中控件无法加载,提示未将对象设置到对象的实例 的 解决方法   解决方案: 卸载掉你机器的所有silverlight插件,然后重启 !   搞定   如果想使用silverlig ...

  6. 《对象程序设计》课程 课程设计、考试安排 及 教师建议(2014.06.30修正)

    [网络问卷-2014.06.30 上午11:30左右回答] 网络121班<对象程序设计>课程设计自我评估调查(问卷网址:http://www.sojump.com/jq/3614612.a ...

  7. 自动化测试之python基础什么是面对对象之类和对象

    前言 学习自动化测试需要掌握一门开发语言,Java.python这两个可以选一个,这里呢笔者推荐的是python语言,因为它比较好学,那么今天呢,笔者就来给大家介绍一下python基础中的面对对象之类 ...

  8. .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

    这两天比较忙,周末也在加班,所以更新的就慢了一点,不过没关系,今天我们就进行千呼万唤的系统开发框架的设计.不知道上篇关于架构设计的文章大家有没有阅读,如果阅读后相信一定对架构设计有了更近一部的理解,如 ...

  9. ddd领域驱动设计_领域驱动设计(DDD)理论启示

    过去几年通天塔一直处于快速的业务能力建设和架构完善的阶段,以应对不断增长的业务需求和容量.高可用等技术需求,现在通天塔平台已经能满足集团主站的大部分活动.频道搭建和运营能力,主流程的新需求越来越少,个 ...

  10. 软件观念革命:交互设计精髓_万字干货,交互设计精髓105条设计原则(附中英PDF资料)...

    <About Face: 交互设计精髓>称得上是交互设计的圣经,用"工作必备,常看常新"来形容也不为过.书中的每句话对平时的实践都有着指导意义.更难能可贵的是,这本圣经 ...

最新文章

  1. LeetCode-80: 删除排序数组中的重复项 II
  2. android 8.0 调系统拍照_Android通知栏微技巧,8.0系统中通知栏的适配
  3. 超形象!流体版的勾股定理演示动图...
  4. vmware 12 安装centos7网络配置
  5. Vue之代码自动格式化
  6. 万年历节气java代码_[分享]时钟万年历代码,供大家学习GUI
  7. 服务器右键文件夹不显示共享,右键不出现共享菜单 文件或文件夹不能共享怎么办?...
  8. Java 自定义按时间先后顺序排序集合
  9. Svn中的tag标签的用法和意义
  10. CMU SDK-mosi多模态数据使用笔记(一)
  11. flex:1是什么?
  12. 基于C++的俄罗斯方块游戏的开发与设计
  13. 【第八章】文件与文件系统的压缩、打包与备份
  14. 前端练习记录(模仿天猫首页)
  15. 怎样解决eclipse在线安装插件奇慢无比问题
  16. 《有限与无限的游戏》第一章 世上至少有两种游戏:经典摘抄(3)
  17. FreeBasic写DLL给VB6调用(直接用API创建和修改VB字符串方法)
  18. 鸿蒙OS麒麟659,搭载海思麒麟659的手机有哪些
  19. 在64位虚拟机上编译C程序为32位的可执行文件
  20. 故障诊断2—研究展望(未完待续)

热门文章

  1. TED+肢体语言塑造你自己+power+fake it till you make it
  2. MATLAB 1\n\n
  3. 机器学习算法之K-近邻算法
  4. 转录组的技术应用 (生物学、医学、农学中的应用)
  5. evolution ubuntu邮箱_Ubuntu下使用Evolution电子邮箱客户端
  6. linux系统中安装java
  7. Python常用函数与技巧总结(三)
  8. 目标定位--Deep Self-Taught Learning for Weakly Supervised Object Localization
  9. 问题解决:树莓派上Python用pip进行安装耗尽内存,卡死
  10. mysql建索引 字段截取_提高MySQL索引策略一:隔离查询列