设计模式指的是人们在工作中摸索出的规律和规则,即一个被记录的最佳实践或解决方案。
一、设计模式原则
- 开闭原则
开闭原则,Open Closed Principle(OCP),指的是软件实体应当对扩展开放,对修改关闭。要求在不修改原有功能的基础上,添加新功能。达到高扩展度、高维护性的效果。
实现开闭原则的精髓在于“抽象”,需要在繁杂的需求中找到不变的部分,对这些内容加以抽象,抽象为接口或者抽象类;对于变化的部分,我们可以进行单独的封装。 - 单一职责原则
单一职责原则,Single Responsibility Principle(SRP),是指就一个类而言,应该只有一个引起它变化的原因。即按照职责分类来设计类,达到高内聚、低耦合的效果。
实现单一职责原则,可以从两方面来入手:(1)防止相同类型的职责,分离到不同的类中,提高代码的可重用性;(2)同一个类无须编制多余的职责,即做事专一。 - 里氏替换原则
里氏替换原则,Liskov Substitution Principle(LSP),完整意思是“若对每个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对o2编写的程序P中,用o1替换o2,程序P的行为功能不变,则S是T的子类型”,换句话说,子类必须能够完全代替它的父类。
实现里氏替换原则,可以从两方面入手:(1)正确设计继承,所有积累的方法都要在子类中得以实现或重写,并且子类不能写出与业务功能实现无关的多余方法或实现;(2)设计最优的继承层次,当其他应用类调用业务功能类时,应该首先考虑调用基类而不是调用子类。 - 依赖倒换原则
依赖倒换原则,Dependence Inversion Principle(DIP),指的是高层模块不依赖于低层模块,两者依赖于抽象,即细节依赖于抽象。这就要求我们针对接口编程,而不针对实现编程。 - 接口隔离原则
接口隔离原则,Interface Segregation Principle(ISP),指的是定义接口的表达要准确,不要创建多余的方法。这点和单一职责原则有一定的关联和相似,目的也是达到高内聚、低耦合的效果。
实现接口隔离原则,可以从三个角度考虑:(1)从业务逻辑角度考虑,把某类功能也设计成接口;(2)对客户程序进行有效区分,并对其对应的接口进行变化;(3)根据场合和调用者的情况,消除无关的方法,只提供同类型角色的接口。 - 迪米特原则
迪米特原则,Law Of Demeter,又叫最少知识原则,Least Knowledge Principle(LKP),指的是一个对象应当对其他对象有尽可能少的了解,即类的设计要尽可能隐藏掉自己的内部数据以及实现细节。
实现迪米特原则,主要目标是控制信息的加载,可以从以下角度入手:(1)创建低耦合的类层次关系;(2)每个类之间降低成员的访问程度,比如通过开放取值和赋值的方法让外界间接访问自己的属性;(3)尽量把类设计成不变的类,以方便功能的实现;(4)可以与依赖倒换原则相结合,通过在调用方和被调用方之间增加一个抽象层,被调用方在遵循抽象层的前提下就可以自由变化,此时抽象层变成了调用方的朋友。
网友评论