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设计原则,应该作为公理存在潜意识中,就像"你要做个好人"。
封装变化原则,目的是为了提高代码的可维护性,就面向对象设计而言,开放封闭原则就包含了封装变化原则,不仅包含了,跟进一步用扩展的方法来约束变化,所以该原则可以纳入开放封闭原则。
针对接口编程而不是实现与依赖倒置原则很相似,可以说是同一原则的着眼点不同,针对接口编程原则强调的是接口的客户,接口使用者不用关心接口的具体实现;依赖倒置原则强调的是高层模块与底层模块的依赖关系。其实二者是一个原则。
经过萃取,我们留下了七大面向对象设计原则,他们是:单一责任原则、开放封闭原则、里氏替换原则、接口分离原则、依赖倒置原则、组合复用原则、迪米特法则。在后面的学习中,我们可以具体分析每种设计模式应用了哪些设计原则。
首先不得不提著名的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设计原则,应该作为公理存在潜意识中,就像"你要做个好人"。
封装变化原则,目的是为了提高代码的可维护性,就面向对象设计而言,开放封闭原则就包含了封装变化原则,不仅包含了,跟进一步用扩展的方法来约束变化,所以该原则可以纳入开放封闭原则。
针对接口编程而不是实现与依赖倒置原则很相似,可以说是同一原则的着眼点不同,针对接口编程原则强调的是接口的客户,接口使用者不用关心接口的具体实现;依赖倒置原则强调的是高层模块与底层模块的依赖关系。其实二者是一个原则。
经过萃取,我们留下了七大面向对象设计原则,他们是:单一责任原则、开放封闭原则、里氏替换原则、接口分离原则、依赖倒置原则、组合复用原则、迪米特法则。在后面的学习中,我们可以具体分析每种设计模式应用了哪些设计原则。
- OO的设计原则
- 转贴-OO设计原则
- OO设计原则总结
- OO设计原则总结
- OO设计原则
- OO设计原则总结
- OO设计原则
- OO设计原则
- OO设计原则
- OO设计原则总结
- OO设计原则总结
- OO 设计原则
- OO设计原则总结
- oo设计原则
- OO设计原则总结
- OO设计原则
- OO 设计原则
- OO设计原则
- Windows Phone 7.5及诺基亚Lumia 800使用感受
- js中有window.onload和<BODY>中的onload属性同时存在时
- C++ char类型
- Should IBOutlets be strong or weak under ARC
- Oracle学习----连接字
- OO设计原则
- Java 6 JVM参数选项大全(转载)
- Java学习札记16:浅析 Thread 类中的 start() 和 run() 方法
- PCB设计常见问题集(转)
- Excel如何批量的将多个工作表转换成一个PDF
- {{CSS}}浮动和定位
- 左旋转字符串(数组循环移位)
- UNICODE 汉字字符串
- [VB.NET]打造个性化ListBox控件