设计模式--设计原则

开闭原则

定义

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。模块应该尽量在不修改原代码的情况下进行扩展

注意事项

  1.通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法。

  2.参数类型、引用对象尽量使用接口或者抽象类,而不是实现类

  3.抽象层尽量保持稳定,一旦确定不允许修改。

单一职责

定义

就一个类而言,应该仅有一个引起它变化的原因,通俗的说,即一个类只负责一项职责,应该仅有一个引起它变化的原因

依赖倒置原则

定义

依赖倒转原则是程序要依赖于抽象接口,不要依赖于具体实现,要针对接口编程,不要针对实现编程。

接口隔离

定义

客户端不应该依赖它不需要的接口。即使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。

另一种定义是:类间的依赖关系应该建立在最小的接口上。

接口隔离原则将非常庞大、臃肿的接口拆分成更小具体的接口,这样客户只需要知道他们感兴趣的方法。

接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署。

核心思想

不应该强迫客户程序依赖他们不需要使用的方法。

优点

1.降低耦合性

2.提高代码的可读性

3.隐藏实现细节

注意事项

1. 使用接口隔离原则拆分接口时,首先必须满足单一职责原则,将一组相关的操作定义在一个接口中,且在满足高内聚的前提下,接口中的方法越少越好。

2. 可以在进行系统设计时采用定制服务的方式,即为不同的客户端提供宽窄不同的接口,只提供用户需要的行为,而隐藏用户不需要的行为

3.不能违反单一职责原则

合成/复用原则

定义

要尽量使用合成和聚合,尽量不要使用继承

就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的

实现方式

在面向对象的设计里,有两种基本的方法可以在不同的环境中复用已有的设计和实现,即通过组合或通过继承。

迪米特法则

也称为最小知道原则

定义

通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息

强调要点

1.从被依赖者的角度来说:只暴露应该暴露的方法或者属性(最少知道原则),即在编写相关的类的时候确定方法/属性的权限

2.从依赖者的角度来说,只依赖应该依赖的对象(只和最直接的朋友打交道)

里氏代换原则

定义

任何基类可以出现的地方,子类一定可以出现。

当满足继承的时候,父类肯定存在非私有的成员,子类肯定是得到了父类的这些非私有成员(假设,父类的成员全部是私有的,那么子类没办法从父类继承任何成员,也就不存在继承的额概念了)。既然子类继承了父类的这些非私有成员,那么父类对象也就可以在子类对象中调用这些非私有成员。所以,子类对象可以替换父类对象的位置。

  在里氏带环原则下,当需求有变化时,只需继承,而别的东西不会改变。由于里氏代换原则才使得开放封闭称为可能。这样使得子类在父类无需修改就可以扩展。  

猜你喜欢

转载自my.oschina.net/u/2353881/blog/1627181
今日推荐