feipeng

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

随笔分类 -  面向对象技术

摘要:(1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 阅读全文

posted @ 2007-03-09 13:29 FrankFei 阅读(809) 评论(0) 推荐(0)

摘要:本文中所有图示纯为个人理解(参考了Assembly中元数据的存储方式),与真实情况可能有所出入。 图中绿色表示公有方法,红色表示私有方法。 本文将通过以下四个案例来分析C#中的接口究竟是如何工作的。 1、公有方法实现接口方法 尽管C#在定义接口时不用指明接口方法的访问控制方式,但默认接口方法均为public型(这可以从反编译的IL代码中看到)。下面是使用Reflector查看的接口IL代码 .c... 阅读全文

posted @ 2007-03-06 15:52 FrankFei 阅读(450) 评论(0) 推荐(0)

摘要:今天把我前段时间整理的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 阅读(5017) 评论(0) 推荐(2)

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

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

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

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

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

posted @ 2007-03-02 15:29 FrankFei 阅读(4241) 评论(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 阅读(6471) 评论(4) 推荐(1)

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

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