二:依赖倒转原则

  A:高层模块不应该依赖底层模块B:抽象不应该依赖细节,细节应该依赖抽象[DH]

  是说要依赖抽象,而不要依赖具体的实现。。如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段。。如果要达到好的"开闭"原则,要尽量的遵守依赖倒转原则。。可以说依赖倒转原则是对"抽象化"的好规范!!

  通俗的说是只有抽象的东西才是稳定的,也是说,我们依赖的是它的稳定。如果将来“抽象”也不稳定了,那么谁稳定我跟谁,其实说白了不是傍大款吗!

  比如我们在观察者模式中(Observer)这里的通知者,不应该是具体。因为我们应当考虑到如果前台那里换了人怎么办?这个通知还可以是其他人通知。比如老板要通知去做某件事怎么办?为了让大家都能用这个通知。所以要设置成抽象的。这里的前台,老板都要依赖这个通知。也是说。细节要依赖抽象。

  三:里氏代换原则:

  定义:子类型必须能够替换它们的父类型[DH]

  这个原则是对继承的一个约束,也是说,继承中子类严格满足"isa"的关系。这里我个人有深刻的体会。尤其是在看别人的UML图的时候。

  对你帮助很大。当你看到一个继承的时候。要习惯性的把他的父类和子类看成一个整体。这样会有助于你去理解各个类之间的关系。因为根据里氏代换原则。父类出现的地方子类也可以出现。

  比如我们再看工厂模式的时候,你看到有的书上简单工厂类关联着运算父类。有的书上是关联着运算类的子类。其实仔细想想他们都没有错,父类和子类的关联都是一样的,父类能出现的地方,子类可以出现。

  在设计模式中的体现:

  设计模式中所有继承都能体现着这一原则。我举一个不符合原则的例子。