前言
根据优秀的设计原则设计优秀的代码,可以更好的提高开发效率
timg.jpg
1.OCP开闭原则
总结:扩展开放变更闭合
我的理解:
(1)抽象接口一旦定义好了之后就不要做变更,可以通过继承的方式去扩展它,这样可以最大限度提升代码的版本兼容性
(2)接口入参和返回结果可以通过泛型定义,泛型可以通过继承限定范围,这样即增加接口的灵活性,又维护了接口的稳定性。
2.DIP依赖倒置原则
总结:1、高层模块不应该依赖于底层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象
我的理解:
(1)高层模块一般对应了一个产品的业务逻辑,高层模块一般面对的是用户,用户可以有很多种操作要求,各种操作要求,经过封装流向底层模块
(2)底层模块一般需要对接多个高层模块,因此需要抽象一些公共的东西,防止重复造轮子,从而提高编码效率,所以底层模块应该提供抽象的接口给高层模块,而不是让高层模块直接依赖底层具体的实现
(3)各个模块在定义时可以先不展开所有需要依赖的细节,将细节抽象,在需求变更的时候,只需要变更细节实现,而保持大致的框架不变。
3.SRP单一职责原则
总结:对象的职责要单一
我的理解:
(1)一个对象中如果具备了太多的功能,在命名上会增加难度,且容易导致逻辑混乱,因为名称与功能不对应容易导致使用者产生歧义。
(2)对象功能太多会导致功能粒度不够细,不方便业务拆分,在应对变更时不够灵活
(3)职责单一的话在实际业务变更时,实现对象替换将会更为便捷,而不会有一种拔出萝卜带出泥的感觉。
4.ISP接口隔离原则
总结:避免实现不必要的接口,接口要灵活
我的理解:
(1)开发者在继承实现接口的时候,不应该被强迫去实现一些根本用不上的接口
(2)将一些复杂的接口类拆分成细化的多个接口,通过多继承的方式实现接口,而不是一口气实现所有的接口
(3)当用户需求变更时,不应该去重新实现一个涵盖很多功能的接口类,而是最大程度缩小重新实现的范围,且减少不必要的实现。
5.LOD迪米特法则
总结:尽量降低类与类之间的耦合
我的理解:
(1)类与类之间需要减少public方法的调用,类在定义的时候需要降低成员方法的可见性。
(2)类与类之间的方法调用,需要减少依赖方法的个数,能用单个方法调用完成的,不要设计成两次完成,方法要做到高内聚。如类内方法通过建造者设计模式设计功能实现,这样类间调用时就不需要去调用这个类的所有建造中间过程方法,如果非要两个步骤中间加操作,可以预留抽象方法,通过实现抽象方法来介入过程。
6.LSP里氏替换原则
总结:子类可以扩展父类的功能,但不能改变父类原有的功能
我的理解:
(1)程序功能单位适用于父类时,通过使用子类时,同样能完成功能
(2)当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格
(3)遵循里氏替换原则,编码时可以放心通过父类声明编码功能,同时利用不同的子类完成各类独有的功能。如接口入参通过父类声明,实际上可以输入任何子类。可以大大的增强接口的复用性,而不需要重新定义。
网友评论