设计模式——设计模式原则

来源:互联网 发布:百度云搜索cms程序 编辑:程序博客网 时间:2024/05/22 06:20
1、单一职责原则(SRP):一个类应当只有一个引起其变化的原因。
使用单一职责原则的好处有:(1)类的复杂性降低;(2)可读性提高;(3)可维护性提高;(4)变更引起的风险降低;

2、里氏替换原则(LSP):在使用父类的地方,可以使用其子类替换。
里氏替换原则的含义:(1)子类必须完全实现父类的方法;(2)子类可以有自己的个性;(3)子类覆盖或实现父类方法时,输入参数范围可以比父类宽松(例如,父类参数是int,子类参数可以为float);(4)子类覆写或实现父类方法时,输出结果可以比父类缩小(例如,父类返回BaseClass,子类返回DerivedClass)。
在应用时,当类中调用其他类时,务必使用父类或接口;若子类不能完全实现父类的方法,应用依赖、聚合或组合替代继承;尽量避免子类的“个性化”。

3、依赖倒置原则(DIP):高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。
三种依赖传递方式:(1)构造函数传递依赖对象(例如:Driver 类的构造函数Driver(ICar car));(2)Setter方法传递依赖对象(例如:Driver 类成员函数setCar(ICar car));(3)接口声明依赖对象(例如: IDriver 接口中的接口函数drive(ICar car))。
在使用时,遵循以下规则:(1)每个类尽量都有接口或抽象类,或二者皆有;(2)变量的表面类型尽量是接口或者抽象类;(3)任何类都不应该从具体类派生;(4)尽量不写覆盖基类的方法;(5)结合里氏替换原则使用。

4、接口隔离原则(ISP):客户端不应该依赖其不需要的接口;类之间依赖关系应该建立在最小的接口之上。
接口隔离原则含义:(1)接口要尽量小;(2)接口尽量减少public方法;(3)单独的订制服务要把接口分离开来;(4)接口设计是有限度的。
在应用时,遵循一下规律:(1)一个接口只服务于一个子模块或业务;(2)通过业务逻辑压缩接口中的public方法;(3)已经污染了的接口,尽量修改,或采样适配器模式进行转化。

5、迪米特原则(LOD):一个类应该对其需要耦合或调用的类知道得最少。
含义:(1)一个类只和朋友类(出现在成员变量、成员方法输入输出参数中的类)交流;(2)朋友类也要减少public方法的调用;(3)能放在本类中的方法尽量不要放在其他类中。

6、开闭原则(OCP):一个软件实体(类、模块和函数)应该对扩展开放,对修改关闭。
变法分为三类:(1)逻辑变化,可以通过修改原有方法来完成;(2)子模块变化,通过扩展完成变化,(3)可见视图变化,若设计灵活,可通过修改扩展完成变化,
优点:(1)可直接扩展单元测试;(2)开闭原则可以提高复用性;(3)开闭原则可以提高可维护性;(4)更接近面向对象的思想。
应用:(1)抽象约束,对扩展进行限定(不允许出现在接口或抽象类中不存在的public方法),参数类型。引用对象尽量使用接口或抽象类,而不是实现类,抽象类尽量保持稳定;(2)元数据控制模块行为;(3)制定项目章程;(4)封装变化,不应该有两个不同的变化出现在同一个接口或抽象类中。


0 0
原创粉丝点击