带你了解设计模式的七大原则 原创

努力的IT小胖子
发布于 2022-1-17 10:47
浏览
1收藏

春节不停更,此文正在参加「星光计划-春节更帖活动

设计模式的的七大原则(SOLID)

开闭原则(Open Closed Principle,OCP)

一个软件实体应当对扩展开放,对修改关闭

如果有一个A类、B类,A类需要新增一个功能,那么可以通过新添加一个B类来来继承A类的原功能,并在B类上完成新增功能。

总结一句话如果需要添加功能,那么扩展新类来实现新增功能的实现而不是修改旧类的方法

里氏替换原则(Liskov Substitution Principle,LSP)

继承必须确保超类所拥有的性质在子类中仍然成立

里氏替换原则是继承复用的基石,只有当子类可以替换超类,软件单位的功能不受到影响时,超类才能真正被复用,而子类也能够超基类的基础上增加新的行为。

里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。

总结一句话子类应该继承父类而不去改变父类

依赖倒置原则(Dependence Inversion Principle,DIP)

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象

比如上层接口A和B,实现类是A1和B1,如果在实现类A1中需要使用B的方法,则依赖与B的接口,而不是B接口的实现。

总结一句话面向接口编程,而不是面向实现类

单一职责原则(Single Responsibility Principle,SRP)

一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分

比如存在A类、B类、C类,如果A、B、C三个类分别代表三个方法,而D类分别继承A、B、C类就可以同时使用三个方法,而不是E类中含有三个方法的具体实现。

每个类都只需要管理自己属于的自己的功能,通过各个类的组成一个超级的大类来完成多个方法,而不需要一个类完成多个功能。

总结一句话每个类只负责自己的事情,而不是变成万能

接口隔离原则(Interface Segregation Principle,ISP)

客户端不应该依赖他不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上

总结一句话各个类建立自己的专用接口,而不是建立万能接口

迪米特法则(Law of Demeter,LoD)

最少知识原则

只与你的直接朋友交谈,不跟“陌生人”说话

一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

总结一句话无需直接交互的两个类,如果需要交互,使用中间者

注意事项过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低

合成复用原则(Composite Reuse Principle,CRP)

又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)

软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

合成或聚合可以将已有对象纳入到新对象中,使之成为新对象的一部分,因此新对象可以调用已有对象的功能。

总结一句话优先组合,其次继承

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2022-1-19 10:41:42修改
5
收藏 1
回复
举报
回复