设计模式原则备忘

设计模式原则备忘

单一职责原则

There should never be more than one reason for a class to change.

单一职责原则(Single Responsibility Principle, SRP):应该有且仅有一个原因引起类的变更;
在Java中奉行面向接口编程,接口一定要做到单一职责,类的设计尽量做到单一职责;

开放-封闭原则

Software entities like classes, modules and functions should be open for extension but closed for modifications.

开放-封闭原则:一个软件实体如类、模块和函数应该对扩展是开放的,对修改是封闭的;
无论模块多么封闭,总会出现无法封闭的需求变化,面对需求,对程序的修改尽可能通过增加新代码实现(开放),而不是更改原有代码(封闭);

应用

  • 对接口or抽象类进行拓展时,在接口or抽象类中不存在的public方法不允许出现;
  • 引用对象变量尽量使用接口/抽象类,避免使用实现类;

依赖倒置原则

High level modules should not depend upon low level modules, Both should depend upon abstractions, Abstractions should not depend upon details. Details should depend upon abstractions.
依赖顺置:接口(抽象)依赖于实现类(细节)
依赖倒置原则:抽象不应该依赖实现细节(接口不依赖于实现类),实现细节依赖抽象(依赖倒置)

一言蔽之,依赖倒置原则就是面向接口(抽象)编程,避免对实现编程,可以降低类之间的耦合性,降低系统的稳定性,降低代码的可读性和可维护性;

里氏替换原则(针对继承)

继承固有缺陷

  • 继承是侵入式的,破坏了父类的封装性;
  • 增强了类之间的耦合。由于子类继承父类,父类代码变更时需要考虑子类的修改,导致代码大规模重构;

里氏替换原则

LSP原则不保证可以用父类替代子类使用

针对继承固有缺陷,里氏替换原则(Liskov Substitution Principle, LSP)提出所有引用父类的地方必须能透明地使用子类对象(用子类替换父类不会出现任何错误异常)
里氏替换原则要求:
1. 子类必须完全实现父类方法;
2. 在类中调用其他类时,引用参数务必选择父类或者接口;

接口隔离原则

接口隔离原则要求接口功能尽量细化:客户端需要什么接口就提供什么接口,去除不需要的接口;

与单一职责区别:
+ 单一职责要求类和接口责任单一;
+ 接口隔离原则要求接口中的方法尽量少;

迪米特原则

迪米特原则(Law of Demeter, LoD)又称最少知识原则(Least Knowledge Principle, LKP);

迪米特原则要求一个类与自己耦合的类知道最少(only talk to your immediate friends),因此迪米特原则要求设计类时尽量降低成员的访问权限;
迪米特原则核心思想:要求类间解耦,弱耦合;但是弱耦合会带来大量的中转类,提高复杂性;

参考

  1. 《设计模式之禅》
  2. 《大话设计模式》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值