feipeng

不要过分强调技术,思想才是关键!
  新随笔  :: 管理

2007年3月2日

摘要: 今天把我前段时间整理的5个面向对象设计原则(SRP,OCP,LSP,DIP,ISP)全部贴出来了,希望对大家有所帮助,也希望能和大家多多交流。 总原则(摘自:Design Patterns Explained): 1、Design to interfaces. 2、Favor composition over inheritance. 3、Find what varies and encapsulate it. 阅读全文

posted @ 2007-03-02 15:49 FrankFei 阅读(4976) 评论(0) 推荐(2) 编辑

摘要: 使用多个专门的接口比使用单一的总接口要好。 一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。 阅读全文

posted @ 2007-03-02 15:39 FrankFei 阅读(2715) 评论(0) 推荐(1) 编辑

摘要: 1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 2、抽象不应该依赖于细节,细节应该依赖于抽象。 阅读全文

posted @ 2007-03-02 15:33 FrankFei 阅读(3749) 评论(3) 推荐(1) 编辑

摘要: 定义:如果对于类型S的每一个对象o1,都有一个类型T的对象o2,使对于任意用类型T定义的程序P,将o2替换为o1,P的行为保持不变,则称S为T的一个子类型。 子类型必须能够替换它的基类型。LSP又称里氏替换原则。 对于这个原则,通俗一些的理解就是,父类的方法都要在子类中实现或者重写,不允许子类出现父类所没有定义的方法。 阅读全文

posted @ 2007-03-02 15:29 FrankFei 阅读(4211) 评论(5) 推荐(0) 编辑

摘要: Software entities(classes,modules,functions,etc.) should be open for extension, but closed for modification。 软件实体应当对扩展开放,对修改关闭,即软件实体应当在不修改(在.Net当中可能通过代理模式来达到这个目的)的前提下扩展。 Open for extension:当新需求出现的时候,可以通过扩展现有模型达到目的。 Close for modification:对已有的二进制代码,如dll,jar等,则不允许做任何修改。 阅读全文

posted @ 2007-03-02 15:28 FrankFei 阅读(6431) 评论(4) 推荐(1) 编辑

摘要: 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。 阅读全文

posted @ 2007-03-02 15:21 FrankFei 阅读(6577) 评论(9) 推荐(0) 编辑