面向对象设计原则

[b]1.开闭原则(open-closed Principle OCP)[/b]
Software entityes should be open for extension, but closed for modification
软件实体应该对扩展开放,对修改关闭。
意思是模块在不修改源代码的基础上对其进行扩展。
从另外一个角度上讲,就是所谓的“对可变性的封装的原则”,考虑你的设计中什么可能会变化,找到可变因素,将它封装起来,这就可以命名为“对可变性的封装原则"
对可变性的封闭原则意味着两点:
a.一种可变性的因素不应当散落在代码的很多角落里,而应当封装到一个对象里面,把可变的不同表象在具体的子类中去实现/覆盖。
b.不同的可变因素不应当混合一起,所以一般的继承不会超过两层。

策略模式(Strategy)对OCP的支持:
Strategy讲的是如果有一组算法,那么将每一个算法封装起来,使得它们可以互换。
算法一:对于有部分没有优惠,折扣为0.
算法二:对于部分优惠10元的折扣
算法三:对于一些部分按折率给折扣,比如一件衣服120,折扣百分比是10%,把折扣为120*10%=12(元)

这个例子,可以看到容易发生变化的折扣,可以把它抽象出来,详见策略模式





[b]2.里氏替换原则(Liskvo substitution Principle ,LSP)[/b]
任何基类可以出现的地方,子类一定可以出现。
[b]3.依赖倒转原则(Dependency inverseion Principle ,DIP)[/b]
详解:to be continued ...
[b]4.接口隔离原则(Interface Segregation Principle ISP)[/b]
应当为客户端提供尽可能小的单独接口,而不是提供大的总接口。
[b]5.组合/聚合原则(Composition/Aggragation Principle CARP)[/b]
要尽量使用组合或聚合关系,而不是使用继承来达到复用的目的。.
[b]6.迪米特原则(Law of Demeter,或LoD)[/b]
一个软件实休应当尽可能少的其他实体发生相互作用。...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值