面向对象设计原则

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

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

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

       


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

你可能感兴趣的:(设计模式,算法)