设计模式之面向对象原则

版权声明:我的四年啊! https://blog.csdn.net/sunshisiqi/article/details/81265644

单一职责原则

 SRP,就一个类而言,应该仅有一个引起他变化的原因。也就是说,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。比如,一个摄像机,它唯一的职责是拍照,摄像;而手机拥有很多职责,不仅可以拍照也可以玩游戏,因此手机的拍照功能比摄像机低很多。所以如果一个类只执行一个职责,其耦合度低,那么这个代码可以做到易维护、易扩展、易复用和灵活多样。

这里写图片描述

开放-封闭原则

 软件实体(类、模块、函数等等)应该可以扩展,但是不能修改。无论模块多么的封闭,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块做出选择。先猜测出最有可能反生的变化种类,然后构造抽象来隔离那些变化。比如,考研和求职,应该做两手准备,并全力以赴。

这里写图片描述

依赖倒转原则

 高层模块不应依赖低层模块,两个模块应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。电脑里,如果CPU、内存、硬盘都需要依赖具体的主板,主板一坏,所有的部件就都没用了,这显然不合理。但反过来,如果内存坏了,也不应该造成其他部件不能用才对。

这里写图片描述

里氏代换原则

 子类型必须能够替换掉他们的父类型。企鹅不能继承鸟类因为企鹅不能飞。猫能继承动物类,以动物的身份拥有吃喝跑叫等行为,可当某一天,我们需要牛羊狗也拥有类似的行为,由于它们都是继承于动物,所以除了更改实例化的地方,程序其他处不需要改变。

这里写图片描述

迪米特法则

 如果两个类彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。小菜新入职,需要配置电脑,可IT部小张有事,其他人又不认识,所以不能及时配置,浪费了一上午的时间。

这里写图片描述

欢迎大家指出不足。

猜你喜欢

转载自blog.csdn.net/sunshisiqi/article/details/81265644