软件设计原则
最近在读 《java desion》这本书,里面介绍了26种设计模式和几种设计原则。笔者会根据读书的进度,将内容与朋友们分享。
这本书里介绍了以下几种设计原则
1 开-闭原则(Open-Close Princilpe,OCP)
Software entities should be open for extension,but closed for modification.
一个软件实体应当对扩展开放,对修改关闭.
1)通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性.
2)已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性.
2 可变性封装的原则(Principle of Encapsulation of Variation,EVP)
找到一个系统的可变因素,将之封装起来.
1)一中可变性不应当散落在代码的很多角落里,应当被封装到一个对象里面.
2)一种可变性不应当与另一种可变性混合在一起.
3 里氏替换原则(Liskov Substitution Princilple,LSP)
任何基类(父类)可以出现的地方,子类一定可以出现.
4 依赖倒转原则(Dependency Inversion Principle,DIP)
要依赖与抽象,不要依赖与实现.
5 接口隔离原则(Interface Segregation Principle,ISP)
应当为客户端尽可能提供小的单独的接口,而不要提供大的总接口.
6 合成/聚合服用原则(Composition/Aggregation Principle,CARP)
要尽量使用合成/聚合,而不是继承关系达到复用的目的.
7 迪米特法则(Law of Demeter,LoD)
一个软件实体应当尽可能少的与其他实体发生相互作用.