随笔-设计模式七大原则

七大原则

  • 单一职责原则
  • 接口隔离原则
  • 依赖倒转原则
  • 里氏替换原则
  • 开闭原则
  • 迪米特法则
  • 合成复用原则
    七大原则的目的:降低耦合度,提高维护性、拓展性、重用性,可靠性。

一、单一职责原则

对类来说,一个类应该只负责一项职责,不能把所有功能都耦合到一起。这样可以降低类的复杂度,提高可读性和可维护性,降低了变更引发的风险。总的来说,就是一个类中,方法足够少,逻辑足够简单,才能保持单一职责。
单一职责可以是类级别的,也可以是方法级别的,依据实际情况来决定使用。

二、接口隔离原则

一个类通过一个接口依赖接口的实现类,该接口应该是最小接口。
在这里插入图片描述
如图,类A通过Interface1依赖实现类B,类B通过Interface1依赖实现类D。A只用到1、2、3方法,B只用到1、4、5方法。那么Interface1对于A、B来说,不是最小的接口。
按照接口隔离原则,可以将Interface1拆分成3个接口。
Interface1:只有1方法
Interface2:只有2、3方法
Interface3:只有4、5方法
如此,B、D两个类根据需求实现对应的接口,就遵循了接口隔离原则。

三、依赖倒转原则

依赖倒转说白了就是面向接口编程,使用接口或者抽象类定制规范,而不设计任何具体的操作,通过其实现类去完成细节的展示。
一般来说,底层模块尽量都要有抽象类或者接口,提高程序的稳定性。变量的声明尽量是抽象或者接口,通过接口去传递参数,这样就有一个缓冲,利于程序的拓展和优化。

四、里氏替换原则

里氏替换是关于继承的。继承对程序设计有很大的便利性,但是也有弊端,因为继承会给程序带来侵入性,增加耦合度。例如,一个类被其他的类所继承,当这个类需要修改时,必须考虑所有子类是否仍然适用,一旦父类做出修改,其他子类的功能可能收到牵连。如何正确适用继承?那么就涉及到里氏替换了。
里氏替换的定义:如果对每个类型为T1的对象t1,都有类型为T2的对象t2,使得以T1定义的所有程序P在所有的对象t1都代替为t2时,程序P的行为没有发生变化,那么类型T2就是类型T1的子类型。
也就是说,所有引用基类的地方,必须能够透明地使用其子类对象。在子类中尽量不要重写基类的方法。(其实继承会让两个类的耦合度增强)

五、开闭原则

开闭原则是编程中最基础、最重要的设计原则:对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。一般来说,也是面向接口编程。基类通用,子类或者实现类展开细节。

六、迪米特法则

迪米特法则又叫最少知道原则,即一个类对自己依赖的类了解越少越好。也就是说,对于被依赖的类不管多么复杂,都将逻辑封装在类之中。对外只提供public方法用以调用。
其实也可以优化为面向接口编程,用接口进行调用。

七、合成复用原则

尽量使用合成、聚合的方式,而不是继承。例如,一个类A要调用B类的方法,可以变量方式调用,而不是继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值