OO设计原则

来源:互联网 发布:mac ps cs6 破解文件 编辑:程序博客网 时间:2024/05/01 01:34
          OO设计原则是根本,设计模式是设计原则在具体问题中的应用。本文将尝试汇总究竟有哪些OO设计原则,以及它们之间的内在联系。
       首先不得不提著名的SOLID原则:Single responsibility, Open closed, Liskov substitution, Interface segregation, Dependency inversion。
单一责任原则SRP(Single Responsibility Principle):一个类/对象只有一个引起变化的原因。换言之,一个类只有一个类型责任。
开放封闭原则OCP(Open Closed Principle):软件实体对扩展开放,对修改封闭。
里氏替换原则LSP(Liskov Substitution Principle):子类的实例能够替换其父类的实例。
接口分离原则ISP(Interface Segregation Principle):使用多个专门的接口比使用单一的总接口要好。一个类对另一个的依赖性建立在最小的接口上。
依赖倒置原则DIP(Dependency Inversion Principle):依赖抽象不要依赖具体实现。
       其它OO设计原则:
DRY原则(Don't repeat yourself):避免重复的代码,这样会降低可维护性。
封装变化原则:把会变化的部分独立出来,让其他部分不受影响。
组合复用原则:优先使用组合而不是继承,通过获得对其他对象的引用而在运行时刻动态改变对象行为。
针对接口编程而不是实现:依赖抽象类的接口,可以在运行时改变对象行为,也就是多态。
迪米特法则LoD(Law of Demeter):也称为最少知识原则LKP(Least Knowledge Principle),一个对象应该对其他对象有最少的了解。
松耦合原则:对象之间的依赖尽量的少。
好莱坞原则:别调用我们,我们会调用你。
        看到这么多设计原则可能会有些头晕,就像小时候妈妈教我们的做人大道理,宽泛而很难体会,没有经验的工程师只能把他们背下来,在以后的实践过程中慢慢体会。我们可以初步分析一下这些原则的内在联系。其中DRY原则和松耦合原则,是所有原则的基础,不仅是OO设计的根本,也是所有软件设计的灵魂,我们暂且不归为OO设计原则,应该作为公理存在潜意识中,就像"你要做个好人"。
        封装变化原则,目的是为了提高代码的可维护性,就面向对象设计而言,开放封闭原则就包含了封装变化原则,不仅包含了,跟进一步用扩展的方法来约束变化,所以该原则可以纳入开放封闭原则。
        针对接口编程而不是实现与依赖倒置原则很相似,可以说是同一原则的着眼点不同,针对接口编程原则强调的是接口的客户,接口使用者不用关心接口的具体实现;依赖倒置原则强调的是高层模块与底层模块的依赖关系。其实二者是一个原则。
         经过萃取,我们留下了七大面向对象设计原则,他们是:单一责任原则、开放封闭原则、里氏替换原则、接口分离原则、依赖倒置原则、组合复用原则、迪米特法则。在后面的学习中,我们可以具体分析每种设计模式应用了哪些设计原则。
原创粉丝点击