设计原则小记

设计原则大家都不陌生,现在简介下自己的简介

设计模式是设计原则的实现,所有设计原则最终都是为了 高内聚低耦合

设计原则共有7种 下面从理解、总结、场景三个角度简单阐述下自己简介

 

S 单一职责原则

理解:不同的类具备不同的职责,各司其职。做系统设计时,如果发现有一个类拥有了两种职责,那么就要问一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分开,千万不要让一个类干的事情太多

总结:一个类只承担一个职责

场景:单个类 职责单一

0 开闭原则

理解:类、模块、函数,可以去扩展,但不要去修改。如果要修改代码,尽量用继承或组合的方式来扩展类的功能,而不是直接修改类的代码。当然,如果能保证对整个架构不会产生任何影响,那就没必要搞的那么复杂,直接改这个类吧。

总结:对类的的改动,最好用扩展而非修改的方式。(对已创建类,尽量避免改动—闭。取而代之的是继承或者扩展或者协议—开)

场景:单个类 对类的修改尽量避免本类的修改 用扩展或继承来达到修改的目的

L 里氏替换原则

理解:一个对象在其出现的任何地方,都可以用子类实例做替换,并且不会导致程序的错误。换句话说,当子类可以在任意地方替换基类且软件功能不受影响时,这种继承关系的建模才是合理的。 总结:子类可以扩展方法,但不应该重写父类的方法。

场景:继承 子类尽量不重写父类的方法 只是使用功能

I 接口隔离原则

理解:一个类实现的接口中,包含了它不需要的方法。将接口拆分成更小和更具体的接口,有助于解耦,从而更容易重构、更改。

总结:对象不应被强迫依赖它不使用的方法。 对我们来说主要是协议中方法注意opttion 标记。 非必要 不声明( 扩展:类.h文件中不需要外界知道的不暴露)

场景:协议 、类.h文件 避免臃肿

D 依赖倒置原则

理解:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

总结:面向接口编程,提取出事务的本质和共性。通用方法或者基类(高层)尽量避免 依赖底层模块(具体业务)二者之间应该有中间件(抽象层/接口层)

场景:类与类之间 要发生关联的类 保证高层的 独立 重点在强调高低依赖

L 迪米特法则

理解:一个对象对另一个对象了解得越多,那么,它们之间的耦合性也就越强,当修改其中一个对象时,对另一个对象造成的影响也就越大。

总结:一个对象应该对其他对象保持最少的了解,实现低耦合、高内聚。低耦合高内聚

场景:类与类之间 跟D比较相似 (D强调的是高低的依赖问题,而这个就是强调类与类之间,该法则包含D)

C 组合/聚合复用原则

理解:合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。它的设计原则是:要尽量使用合成/聚合,尽量不要使用继承。

总结:就是说要少用继承,多用合成关系来实现。继承复用有一定的缺点:比如如果基类发生了改变,那么派生类的的实现就不得不发生改变。使用组合/聚合复用原则就解决了继承复用的缺点。也就是组件化

场景:各个组件高度独立 彼此能够相互组合

参考资料:https://www.jianshu.com/p/e5c69c7b8c00

 

posted @ 2019-11-14 10:24  小菜看代码  阅读(142)  评论(0编辑  收藏  举报