OOAD设计原则(不全)

来源:互联网 发布:ubuntu ssh安装 编辑:程序博客网 时间:2024/05/19 08:02
OOAD设计原则
可读性(高)
可复用性(高)
可扩展性(高)
可维护性(高)
高内聚,低耦合
内聚度
表示一个应用程序的单个单元所负责的任务数量和多样性
耦合度
表示类之间关系的紧密程度
原则
单一职责
类的职责单一,不能太多的职责放在一个类中
一个类应该只做一件事情
类的职责:由该类对象在系统中的角色所决定的
开闭原则
软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上扩展其功能
对扩展开放,对更改封闭。
更适用于继承
里氏替换原则
在软件系统中,一个可以接受基类对象的的地方必然可以接受一个子类对象
在一个软件系统中,子类应该能够替换任何父类能够出现的地方,不会让调用父类的客户程序从行为上有任何改变
类的继承原则:里氏替换原则常用来检查两个类是否为继承关系
动作真确性保证:里氏替换原则对子类进行了约束。
所有子类的行为功能必须和使用者对其父类的期望保持一致,如果子类达不到这一点,那么必然违反里氏替换原则
依赖倒转原则
要针对抽象层编程,而不要针对具体类编程
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖于细节,细节依赖于抽象
接口隔离原则
使用多个专门的接口来取代一个统一的接口
客户不应该依赖它们用不到的方法,只给每个客户它所需要的接口
接口设计原则
接口的设计应该遵循最小接口原则,不要把用户不使用的方法塞进同一个接口里,如果一个接口的方法没使用到,则说明该接口过胖,应该将其分割成几个功能专一的接口,使用多个专门的接口比使用单一的总接口要好
接口的继承原则
如果一个接口A继承另一个接口B,则接口A相当于继承了接口B的方法,那么继承了接口B后的接口A也遵循了上述原则:不应该包含用户不是用的方法,反之,则说明了接口A被B污染了,因该重新设计他们的关系
实现
通过多层继承分离接口

通过委托分离接口
组合聚度合用原则
在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系
在一个新的对象中使用一些已 有的对象,使之成为新对象的一部分,新的对象通过向这些对象委托功能达到复用这些对象的目的
好处:组合聚合复用
新对象存取成分对象的唯一方法是通过成分对象的接口
这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的
这种复用所需的依赖较少
每一个新的类可以将焦点集中在一个任务上
这种复用可以在运行时间内动态进行,作为整体的新对象可以动态的引用于部分对象类型相同的对象。
组合聚合是动态行为,即运行时行为,可以通过使用组合聚合的方式上获得更高的灵活性
继承复用
拥有者可以看见子对象的类容(白箱复用)
继承复用破坏封装,
迪米特原则
一个软件实体对其他实体的引用越来越少,或者说如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用,而不是通过引入一个第三者发生间接交互
最少知识原则
一个软件实体应当尽可能少的与其他实体发生相互作用
当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易
他是对软件实体之间通信的限制,并对软件实体之间通信的宽度和深度做出了要求
表述方式
只与你直接的朋友们通信
不要更“陌生人”说话
每一个软件单位对其他的单位都只有最少的知识,而且局限于那些于本单位密切相关的软件单位
“朋友”的条件
当前对象本身(this)
原创粉丝点击