OO设计原则
来源:互联网 发布:mac恢复系统 编辑:程序博客网 时间:2024/06/10 17:14
面向对象设计的基本原则:
- 封装变化Encapsulate what varies.
- 面向接口编程而非实现 Code to an interface rather than to an implementation.
- 优先使用组合而非继承 Favor Composition Over Inheritance
一.单独职责原则:The Single responsibility(SRP)
Every object in your system should have a single responsibility ,and all the object s services should be focused on carrying out that single responsibility .
系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。
- 每一个职责都是一个设计的变因,需求变化的时候,需求变化反映为类职责的变化。当你系统里面的对象都只有一个变化的原因的时候,你就已经很好的遵循了SRP原则。
- 如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化就可能削弱或者抑制这个类其它职责的能力。这种设计会导致脆弱的设计。当变化发生的时候,设计会遭到意想不到的破坏。
- SRP 让这个系统更容易管理维护,因为不是所有的问题都搅在一起。
- 内聚Cohesion 其实是SRP原则的另外一个名字.你写了高内聚的软件其实就是说你很好的应用了SRP原则。
- 怎么判断一个职责是不是一个对象的呢?你试着让这个对象自己来完成这个职责,比如:“书自己阅读内容”,阅读的职责显然不是书自己的。
- 仅当变化发生时,变化的轴线才具有实际的意义,如果没有征兆,那么应用SRP或者任何其它的原则都是不明智的。
二.开闭原则:The Open closed principle(OCP)
A module should be open for extension but closed for modification.
三.Liskov替换原则:Liskov substitution principle(LSP)
Subclasses should be substituted for their base class
四.依赖性倒置原则:The dependency inversion principle(DIP)
Depend upon abstractions; Do not depend upon concretions.
五.接口隔离原则:The Interface segregation principle(ISP)
Many client specific interfaces are better than one general purpose interface.
六.不要重复:DRY : Don't repeat yourself
通过抽取公共部分放置在一个地方避免代码重复.
Avoid duplicate code by abstracting out things that are common and placing those thing in a single location .
- DRY 很简单,但却是确保我们代码容易维护和复用的关键。
- 你尽力避免重复代码候实际上在做一件什么事情呢?是在确保每一个需求和功能在你的系统中只实现一次,否则就存在浪费!系统用例不存在交集,所以我们的代码更不应该重复,从这个角度看DRY可就不只是在说代码了。
- DRY 关注的是系统内的信息和行为都放在一个单一的,明显的位置。就像你可以猜到正则表达式在.net中的位置一样,因为合理所以可以猜到。
- DRY 原则:如何对系统职能进行良好的分割!职责清晰的界限一定程度上保证了代码的单一性。
- OO的设计原则
- 转贴-OO设计原则
- OO设计原则总结
- OO设计原则总结
- OO设计原则
- OO设计原则总结
- OO设计原则
- OO设计原则
- OO设计原则
- OO设计原则总结
- OO设计原则总结
- OO 设计原则
- OO设计原则总结
- oo设计原则
- OO设计原则总结
- OO设计原则
- OO 设计原则
- OO设计原则
- 几道智力题
- 堆和栈的区别
- Fedora下搭建FTP服务器-VSFTP
- jquery用ajax实现级联
- JPEG 2000
- OO设计原则
- 关于爱情
- 如何求最大公约数
- Maven介绍
- Microsoft Visual Studio 2008
- freemarker空值的多种处理方法
- 相对路径的使用&&调用.C中的函数
- pragma
- C++ 中define(宏定义) 各种用法(含特殊),小举个例子,谢谢!