《Java与模式》学习笔记(1)——设计原则

面向对象的设计原则:

OCP,Open-Closed Principle,“开-闭”原则,讲的是:一个软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension, but closed for modification.)。这个原则说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下改变这个模块的行为。

“开-闭”原则如果从另外一个角度讲述,就是所谓的“对可变性的封装原则”(Principle of Encapsulation of Variation,常常略写作EVP)。“对可变性的封装原则”讲的是找到一个系统的可变因素,将之封装起来。

LSP,Liskov Substitution Principle,里氏替换原则,讲的是:一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能觉察出基类对象和子类对象的区别。

DIP,Dependence Inversion Principle,依赖倒转原则,讲的是:要依赖于抽象,不要依赖于具体。依赖倒转原则的表述是:抽象不应当依赖于细节;细节应当依赖于抽象。(Abstractions should not depend upon details. Details should depend upon abstractions),另一种表述是:要针对接口编程,不要针对实现编程。(Program to an interface, not an implementation)

ISP,Interface Segregation Principle,接口隔离原则,讲的是:使用多个专门的接口比使用单一的总接口要好。角色隔离原则、定制服务(Customized Service)、接口污染(Interface contamination)

CARP,Composite/Aggregate Reuse Principle,合成/聚合复用原则,经常又叫做合成复用原则(Composite Reuse Principle,CRP),讲的是:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。另一个更简短的表述就是:要尽量使用合成/聚合,尽量不要使用继承。

LoD,Law of Demeter,迪米特法则,又叫做最少知识原则(Least Knowledge Principle,LKP),就是说,一个对象应当对其他对象有尽可能少的了解。迪米特法则要求任何一个软件实体,除非绝对需要,不然不要与外界通信。即使必须进行通信,也应当尽量限制通信的广度和深度。

只有当以下的Coad条件全部被满足时,才应当使用继承关系:
1.子类是超类的一个特殊种类,而不是超类的一个角色,也就是要区分“Has-A”与“Is-A”两种关系的不同。
2.永远不会出现需要将子类换成另一个类的子类的情况。
3.子类具有扩展超类的责任,而不是具有置换掉(Override)或注销掉(Nullify)超类的责任。
4.只有在分类学角度上有意义时,才可以使用继承,不要从工具类继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值