feipeng

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

2007年3月13日

摘要: 创建型模式   1、FACTORY—追MM少不然口味有所不同,但不管你麦当劳和肯德基就是生产鸡 了请吃饭了,麦当劳的鸡翅和肯带MM去麦当劳或肯德基,只管向翅的Factory 德基的鸡翅都是MM爱吃的东西,虽服务员说“来四个鸡翅”就行了。   工厂模式:客户类和工消费者无须修改就可以接纳何创建及如何向客户端提供 厂类分开。消费者任何时候需要新产品。缺点是当产品修改时,。 某种... 阅读全文

posted @ 2007-03-13 10:12 FrankFei 阅读(1250) 评论(2) 推荐(0) 编辑

2007年3月12日

摘要: 一、概述 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 阅读全文

posted @ 2007-03-12 14:40 FrankFei 阅读(11535) 评论(9) 推荐(0) 编辑

摘要: 一、概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。 阅读全文

posted @ 2007-03-12 09:41 FrankFei 阅读(3968) 评论(11) 推荐(0) 编辑

2007年3月9日

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

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

摘要: 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,工厂方法针对的仅仅是一种“产品”,或者称为“类”,而抽象工厂实际上针对很多平行的产品,因此层次不同。抽象工厂才是名副其实的“工厂”,即不仅仅只生产一种产品,抽象工厂是层次较高的模式,针对应用中需要使用的一系列相关的类给出一个创建接口。 学会了用抽象工厂模式,你将理解OOP的精华:面向接口编程。 阅读全文

posted @ 2007-03-09 13:25 FrankFei 阅读(7799) 评论(8) 推荐(0) 编辑

2007年3月8日

摘要: 下面为参考.Net Framework整理的名称规则,请.Net开发人员务必通读全文。 阅读全文

posted @ 2007-03-08 14:03 FrankFei 阅读(819) 评论(0) 推荐(0) 编辑

2007年3月6日

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

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

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 阅读(4972) 评论(0) 推荐(2) 编辑

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

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

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

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

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

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

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

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