软件设计原则
serenada
用心去感受编程之美,用静去悟编程之道!
展开
-
注重接口,而不是实现 (原则之一)
注重接口,而不是实现,依赖接口,而不是实现。接口是抽象是稳定的。实现是多变的而且是多种多样的,我们要把现实事物中的公共的,一般的,普遍的东西高度抽象出来,从而形成接口。而把具体的实现方式放到具体的实现类中去;原创 2011-11-14 09:38:00 · 1074 阅读 · 0 评论 -
喜欢组合而不是继承 (原则之二)
喜欢组合而不是继承,使用组合的时候就必须要使用依赖倒置原则,或者使用面向接口编程,其实使用依赖倒置原则比较来得彻底一些,还能降低系统的耦合度,如果我们无限制的使用继承来设计我们的系统那么就会使我们的系统中的类过多,变成类的乘积,即:“类爆炸”,所以大家还是多多使用组合,但是也不能不使用继承哦,呵呵,,,有一个度即可!原创 2011-11-14 09:44:53 · 730 阅读 · 0 评论 -
代码坏味道,重构与模式
原创 2011-11-23 09:51:56 · 1130 阅读 · 0 评论 -
Common Closure Principle(CCP)–共同封闭原则 -- (原则之六)
一个包中所有的类应该对同一种类型的变化关闭。一个变化影响一个包,便影响了包中所有的类。一个更简短的说法是:一起修改的类,应该组合在一起(同一个包里)。如果必须修改应用程序里的代码,我们希望所有的修改都发生在一个包里(修改关闭),而不是遍布在很多包里。CCP原则就是把因为某个同样的原因而需要修改的所有类组合进一个包里。如果2个类从物理上或者从概念上联系得非常紧密,它们通常一起发生改变,那么它们应该属原创 2011-11-18 15:46:16 · 4447 阅读 · 0 评论 -
Single Responsibility Principle (SRP) – 职责单一原则 --- (原则之五)
单一职责原则,其核心的思想是:一个类,只做一件事,并把这件事做好,其只有一个引起它变化的原因。单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而极大的损伤其内聚性和耦合度。单一职责,通常意味着单一的功能,因此不要为一个模块实现过多的功能点,以保证实原创 2011-11-18 15:41:36 · 772 阅读 · 0 评论 -
Acyclic Dependencies Principle (ADP) – 无环依赖原则 -- (原则之七)
包之间的依赖结构必须是一个直接的无环图形,也就是说,在依赖结构中不允许出现环(循环依赖)。如果包的依赖形成了环状结构,怎么样打破这种循环依赖呢?有2种方法可以打破这种循环依赖关系:第一种方法是创建新的包,如果A、B、C形成环路依赖,那么把这些共同类抽出来放在一个新的包D里。这样就把C依赖A变成了C依赖D以及A依赖D,从而打破了循环依赖关系。第二种方法是使用DIP(依赖倒置原则)和ISP(接口分隔原原创 2011-11-18 15:51:24 · 3604 阅读 · 0 评论 -
架构师应该而且必须知道的97件事!
1. 客户需求重于个人简历 ( Nitin Borwankar )客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。2. 简化根本复杂性 ,消除偶发复杂性 ( Neal Ford )分析问题好比拨云见月、水落石出。3. 关键问题可能不是出在技术上 ( Mark Ramm )团队同心,其利断金。4. 以沟通为中心,坚持简明清晰的表达方式和开明的领导转载 2011-11-16 23:58:56 · 936 阅读 · 2 评论 -
开-闭原则 -- (原则之三)
开闭原则,原理其实很简单,即:对修改关闭,对扩展开放,话虽如此不过在现实中如果想要要能达到这样的设计也绝非易事,这就需要我们有扎实的基本功和经验的积累了,此原则一般采用的就是面向接口的编程,要对外提供接口,而把具体的实现封装起来!原创 2011-11-16 23:30:44 · 703 阅读 · 0 评论 -
依赖倒置(Dependency Inversion Priciple) -- (原则之四)
原来编程都是依赖于底层的实现,而现在呢我们要反过来,要“依赖抽象而不依赖具体”,其实还是接口编程,比如当我们在类中声明一个引用的变量时我们不直接使用他的具体类型,而是使用父类型或者抽象类型,还可以实现运行期动态绑定的效果,列:创建一个集合:List list = new ArrayList(); 而不是像这样:ArrayList list = new Arraylist();原创 2011-11-16 23:45:05 · 618 阅读 · 0 评论 -
设计的臭味,腐化软件的气味
软件开发的过程中所体现出来的坏味道:1.僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其它部分作出改动;2.脆弱性:对系统的改动往往会导致一些在概念上无关的地方出现问题;3.牢固性:很难解开系统的纠结,使之一些功能成为其它系统能够公用的组件;4.粘滞行:即做正确的事情比做错误的事情要困难很多,系统对环境和某些不可预料的事情太过于依赖;5.不必要的原创 2012-01-07 13:42:08 · 1329 阅读 · 0 评论