知识大全 PHP程序61条面向对象分析设计的经验原则[1]

Posted 原则

篇首语:卧疾丰暇豫,翰墨时间作。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP程序61条面向对象分析设计的经验原则[1]相关的知识,希望对你有一定的参考价值。

PHP程序61条面向对象分析设计的经验原则[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  你不必严格遵守这些原则 违背它们也不会被处以宗教刑罚 但你应当把这些原则看成警铃 若违背了其中的一条 那么警铃就会响起 Arthur J Riel

  ( )所有数据都应该隐藏在所在的类的内部

  ( )类的使用者必须依赖类的共有接口 但类不能依赖它的使用者

  ( )尽量减少类的协议中的消息

  ( )实现所有类都理解的最基本公有接口[例如 拷贝操作(深拷贝和浅拷贝) 相等性判断 正确输出内容 从ASCII描述解析等等

  ( )不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中

  如果类的两个方法有一段公共代码 那么就可以创建一个防止这些公共代码的私有函数

  ( )不要以用户无法使用或不感兴趣的东西扰乱类的公有接口

  ( )类之间应该零耦合 或者只有导出耦合关系 也即 一个类要么同另一个类毫无关系 要么只使用另一个类的公有接口中的操作

  ( )类应该只表示一个关键抽象

  包中的所有类对于同一类性质的变化应该是共同封闭的 一个变化若对一个包影响 则将对包中的所有类产生影响 而对其他的包不造成任何影响

  ( )把相关的数据和行为集中放置

  设计者应当留意那些通过get之类操作从别的对象中获取数据的对象 这种类型的行为暗示著这条经验原则被违反了

  ( )把不相关的信息放在另一个类中(也即 互不沟通的行为)

  朝着稳定的方向进行依赖

  ( )确保你为之建模的抽象概念是类 而不只是对象扮演的角色

  ( )在水平方向上尽可能统一地分布系统功能 也即 按照设计 顶层类应当统一地共享工作

  ( )在你的系统中不要创建全能类/对象 对名字包含Driver Manager System Susystem的类要特别多加小心

  规划一个接口而不是实现一个接口

  ( )对公共接口中定义了大量访问方法的类多加小心 大量访问方法意味着相关数据和行为没有集中存放

  ( )对包含太多互不沟通的行为的类多加小心

  这个问题的另一表现是在你的应用程序中的类的公有接口中创建了很多的get和set函数

  ( )在由同用户界面交互的面向对象模型构成的应用程序中 模型不应该依赖于界面 界面则应当依赖于模型

  ( )尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则 避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则)

  ( )从你的设计中去除不需要的类

  一般来说 我们会把这个类降级成一个属性

  ( )去除系统外的类

  系统外的类的特点是 抽象地看它们只往系统领域发送消息但并不接受系统领域内其他类发出的消息

  ( )不要把操作变成类 质疑任何名字是动词或者派生自动词的类 特别是只有一个有意义行为的类 考虑一下那个有意义的行为是  否应当迁移到已经存在或者尚未发现的某个类中

  ( )我们在创建应用程序的分析模型时常常引入代理类 在设计阶段 我们常会发现很多代理没有用的 应当去除

  ( )尽量减少类的协作者的数量

  一个类用到的其他类的数目应当尽量少

  ( )尽量减少类和协作者之间传递的消息的数量

  ( )尽量减少类和协作者之间的协作量 也即 减少类和协作者之间传递的不同消息的数量

  ( )尽量减少类的扇出 也即 减少类定义的消息数和发送的消息数的乘积

  ( )如果类包含另一个类的对象 那么包含类应当给被包含的对象发送消息 也即 包含关系总是意味着使用关系

  ( )类中定义的大多数方法都应当在大多数时间里使用大多数数据成员

  ( )类包含的对象数目不应当超过开发者短期记忆的容量 这个数目常常是

  当类包含多于 个数据成员时 可以把逻辑相关的数据成员划分为一组 然后用一个新的包含类去包含这一组成员

  ( )让系统功能在窄而深的继承体系中垂直分布

  ( )在实现语义约束时 最好根据类定义来实现 这常常会导致类泛滥成灾 在这种情况下 约束应当在类的行为中实现 通常是在  构造函数中实现 但不是必须如此

  ( )在类的构造函数中实现语义约束时 把约束测试放在构造函数领域所允许的尽量深的包含层次中

  ( )约束所依赖的语义信息如果经常改变 那么最好放在一个集中式的第 方对象中

  ( )约束所依赖的语义信息如果很少改变 那么最好分布在约束所涉及的各个类中

  ( )类必须知道它包含什么 但是不能知道谁包含它

  ( )共享字面范围(也就是被同一个类所包含)的对象相互之间不应当有使用关系

cha138/Article/program/PHP/201311/21393

相关参考

知识大全 PHP学习笔记之面向对象设计

PHP学习笔记之面向对象设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象设计是php

知识大全 php面向对象public private protected 访问修饰符

本篇文章是对php面向对象publicprivateprotected访问修饰符进行了详细的分析介绍需要的朋友参考下   PHP中有三种访问修饰符分别是public(公共的默认)protec

知识大全 面向对象建模与数据库建模的比较

  我们知道一个软件从无到有需要经过如下几个阶段分析设计编程调试部署和运行  编程阶段我们通常使用Java/NET这样面向对象语言工具可以带来很多设计上的好处但是也存在一个奇怪的现象很多程序员虽然在使

知识大全 再谈面向对象

  谈到面向对象这方面的文章非常多但是明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现其初面向对象是专指在程序设计中采用封装继承抽象等设计方法可是这个定义显然不能再适合现在情况面向

知识大全 分析和设计

  面向对象的范式是思考程序设计时一种新的而且全然不同的方式许多人最开始都会在如何构造一个项目上皱起了眉头事实上我们可以作出一个好的设计它能充分利用OOP提供的所有优点  有关OOP分析与设计的书籍大

知识大全 php设计模式介绍之迭代器模式

  《PHP设计模式介绍》第八章迭代器模式  类中的面向对象编程封装应用逻辑类就是实例化的对象每个单独的对象都有一个特定的身份和状态单独的对象是一种组织代码的有用方法但通常你会处理一组对象或者集合  

知识大全 代码复用的规则

  代码复用是绝大多数程序员所期望的也是OO的目标之一总结我多年的编码经验为了使代码能够最大程度上复用应该特别注意以下几个方面  对接口编程  对接口编程是面向对象设计(OOD)的第一个基本原则它的含

知识大全 PHP面向对象编程快速入门

PHP面向对象编程快速入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象编程(OOP)

知识大全 PHP中实现面向对象编程的研究

PHP中实现面向对象编程的研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象编程的概念

知识大全 PHP中实现面向对象编程

PHP中实现面向对象编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这篇文章介绍在PHP的面