不急不徐,持之以恒。

http://blog.gopersist.com/

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  24 随笔 :: 0 文章 :: 52 评论 :: 0 Trackbacks

开-闭原则(Open-Closee Principle OCP)

 

一个软件实体,应当对扩展开放,对修改关闭。

要求一个软件系统可以在不修改原有代码的情况下,通过扩展达到增强其功能的目的。

    

a. 里氏代换原则(LSP): 任何基类出现的地方,子类一定可以出现。

b. 依赖倒转原则(DIP): 要依赖于抽象,不要依赖于实现。

c. 合成/聚合复用原则(CARP): 要尽量使用合成/聚合,而不是继承关系达到复用的目的。

d. 接口隔离原则(ISP): 应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口。

e. 迪米特法则(LoD): 一个软件实体应当与尽可能少的其他实体发生相互作用。

只与朋友通信而不与陌生人说话。朋友的定义如下:

·         1. 当前对象本身(this);

·         2. 以参量形式传入到当是对象方法中的对象;

·         3. 当前对象的实例变量直接引用的对象,如果当前对象的实例变量是一个聚集,则聚集中的元素都是朋友;

·         4. 当前对象所创建的对象。

·         以上法则的缺点是会产生很多小方法,降低效率,产生困惑。克服方法是使用依赖倒转原则,建立一个抽象陌生人。

 

将条件转移语句改写成为多态性。如果一个条件转移语句确实封闭了某种商务逻辑的可变性,此时将可变性封装起来才符合开-闭原则设计思想,否则就是多态性污染

 

接口

单方法接口、标识接口。

不能使用常量接口。

 

抽象类

应尽可能不继承具体类而只继承抽象类。

应当拥有尽可能多的共同代码,以利于复用。数据应尽可能放到实现类,以减少内存占用。

 

联合使用接口和抽象类,即:定义一个接口,再定义一个抽象类实现这一接口,抽象类中将必要的方法实现。这样做的目的是因为子类只能有一个父类,如果只有抽象类,则类型定义的次要类型将很难做,如果只有接口,则无法对通用部分做实现。 这其实就是缺省适配模式。统一命名规范为:Abstract + 接口名,如:接口Collection,抽象类AbstractCollection

posted on 2010-03-30 08:44 老林 阅读(1948) 评论(1)  编辑  收藏 所属分类: 设计模式

评论

# re: 设计原则 2010-03-31 11:07 隔叶黄莺
楼主也在看《Java 与模式》呀  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: