设计原则--开发中的六大设计原则

设计原则(SOLID–六大原则首字母缩写)

  1. 单一职责

    应该有且仅有一个原因引起类的变更。

    单一职责原则要求一个接口或一个类只能有一个原因引起变化,也就是一个接口或者类只能有一个职责,它就负责一件事情。

    我们以打电话为例,电话通话的时候有 4 个过程发生:拨号、通话、回应、挂机。那我们写一个接口,在接口或方法里面包含所有的电话通话的方法。

    好处:

    1. 类的复杂性降低,实现什么职责都有清晰明确的定义;

    2. 可读性高,复杂性降低,可读性自然就提高了;

    3. 可维护性提高,可读性提高了,那自然更容易维护了;

    4. 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

  2. 开闭原则

    对扩展开放,对修改关闭

    为什么要用开闭原则?

    1. 开闭原则非常著名,只要是做面向对象编程的,在开发时都会提及开闭原则。

    2. 开闭原则是最基础的一个原则,其他5个原则都是开闭原则的具体形态,而开闭原则才是其精神领袖。

    3. 开闭原则提高了复用性,以及可维护性。

  3. 依赖倒置原则

    1. 模块间的依赖通过抽象发生,实现类之间不直接发生依赖关系,其依赖关系是通过接口或抽象类产生的;

    2. 接口或抽象类不依赖于实现类;

    3. 实现类依赖接口或抽象类。

    说白了,就是“面向接口编程

  4. 接口隔离

    接口隔离原则就是客户端不应该依赖它不需要的接口,或者说类间的依赖关系应该建立在最小的接口上。

  5. 里氏替换原则

    如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代替o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。

    通俗点讲,就是只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或异常。

    • 子类必须完全实现父类的方法。
    • 子类可以有自己的方法
    • 覆盖或实现父类的方法时,输入参数可以被放大(如:HashMap=>Map)
    • 覆盖或实现父类的方法时,输出结果可以被缩小
  6. 迪米特法则

    迪米特法则(LoD)也叫最少知道法则:一个对象应该对其他对象有最少的了解

总结六大设计原则

  1. 单一职责原则:一个类或接口只承担一个职责。

  2. 里氏替换原则:在继承类时,务必重写(override)父类中所有的方法,尤其需要注意父类的protected方法(它们往往是让你重写的),子类尽量不要暴露自己的public方法供外界调用。

  3. 依赖倒置原则:高层模块不应该依赖于低层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。

  4. 接口隔离原则:不要对外暴露没有实际意义的接口。

  5. 迪米特法则:尽量减少对象之间的交互,从而减小类之间的耦合。

  6. 开闭原则:对软件实体的改动,最好用扩展而非修改的方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼诺尔雷迪亚兹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值