OO原则

OCP ( Open-Close Principle,开-闭原则 )
此原则是由"Bertrand Meyer"提出的。
原文是:"Software entities should be open for extension,but closed for modification"。
就是说模块应对扩展开放,而对修改关闭。
模块应尽量在不修改原(是"原",指原来的代码)代码的情况下进行扩展。
开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。
这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。 
其他的原则也是对它的实现提供了路径。
 
LSP( Liskov Substituition Principle,里氏代换原则)
里氏代换原则是由"Barbara Liskov"提出的。
如果调用的是父类的话,那么换成子类也完全可以运行。
里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。”
也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类。
 
DIP( Dependence Inversion Principle,依赖倒换原则 )
抽象不应该依赖与细节,细节应当依赖与抽象。
要针对接口编程,而不是针对实现编程。
传递参数,或者在组合聚合关系中,尽量引用层次高的类。
依赖倒换原则,“设计要依赖于抽象而不是具体化”。
换句话说就是设计的时候我们要用抽象来思考,
而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。
这样做有什么好处呢?人的思维本身实际上就是很抽象的,
我们分析问题的时候不是一下子就考虑到细节,
而是很抽象的将整个问题都构思出来,
所以面向抽象设计是符合人的思维的。
另外这个原则会很好的支持OCP,
面向抽象的设计使我们能够不必太多依赖于实现,
这样扩展就成为了可能,这个原则也是文章《Design by Contract》的基石。
 
ISP( Interface Segregation Principle,接口隔离原则 )
定制服务的例子,每一个接口应该是一种角色,
不多不少,不干不该干的事,该干的事都要干
“将大的接口打散成多个小接口”
 
CARP( Composition/Aggregation Reuse Principle,聚合复用原则 )
少用继承,多用聚合关系来实现。
设计者首先应当考虑复合/聚合,而不是继承,
Favor Composition over Inheritance,
在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。
LoD or LKP ( Law of Demeter or Least Knowlegde Principle,迪米特法则 )
最少知识原则。不要和陌生人说话。
迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,
所以定义为迪米特法则。
它讲的是“一个对象应当尽可能少的去了解其他对象”。
也就是又一个关于如何松耦合(Loosely-Coupled)的法则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值