码迷,mamicode.com
首页 > 其他好文 > 详细

软件设计6大原则

时间:2014-06-01 23:45:06      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:c   style   blog   a   http   ext   

1.开闭-原则:对于一个软件实体(类,模块,函数等)来说,应该可以扩展,但不可以修改。

对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification)。

2.单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。

软件设计就是要发现职责并且把这些职责相互分离,如果你可以想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。

3.迪米特法则

 

4.里氏代换原则

子类必须能够替换掉其父类。

例如如果设定鸟类可以飞,那么企鹅鸵鸟就不能继承于鸟类了。

5.接口分离原则

 

6.依赖倒置原则

a.高层模块不应该依赖低层模块,两个模块均应该依赖抽象。

b.抽象不应该依赖细节,细节应该依赖抽象。

为什么要叫倒置呢?

--程杰老师所说的例子,大话设计模式,第5章节

  面向过程的开发时,为了使得常用代码可以复用,一般都会把这些代码写成函数的程序库,这样我们在做新项目的时候,去调用这些低层的函数就可以了。比如我们做的项目要访问数据库,所以我们就把访问数据库的代码写成了函数,每次做新项目是就去调用他们。这就叫做高层模块依赖低层模块。

  问题是,当我们做新项目时,发现业务逻辑的高层模块都是一样的,但客户却希望使用不同的数据库或存储信息方式,这时以上的设计就会出现问题。由于高层模块与低层数据库绑定,没办法复用这些高层模块。就像PC中,如果CPU、内存、硬盘都需要依赖于具体的主板,主板一坏,所有部件都没用了,这显然不合理。反过来说,主板坏了应该不影响其他组件的使用。而如果不管高层模块还是低层模块,它们都依赖于抽象,具体一点就是抽象类和接口,只要接口稳定,那么任何一个的更改都不用担心其他收到影响,这就使得无论高层模块还是低层模块都可以容易的复用。

bubuko.com,布布扣

软件设计6大原则,布布扣,bubuko.com

软件设计6大原则

标签:c   style   blog   a   http   ext   

原文地址:http://www.cnblogs.com/dandingchuan/p/3762916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!