随笔分类 -  设计模式

摘要:有工厂模式引出抽象工厂模式,先看工厂模式实例代码: public abstract class Product { public abstract void work(); } public class ProductA : Product { public override void work() { Console.Write("ProductA"); } } public class ProductB : Product { public override... 阅读全文
posted @ 2013-02-25 09:31 xiepeixing 阅读(267) 评论(0) 推荐(0)
摘要:面向对象有几个原则:开闭原则(Open Closed Principal,OCP)、里氏代换原则(Liskov Substitution Principle,LSP)、依赖倒转原则(Dependency Inversion Principle,DIP)、接口隔离原则(Interfce Segregation Principle,ISP)、合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)、最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则)。开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。其 阅读全文
posted @ 2013-02-22 09:53 xiepeixing 阅读(506) 评论(0) 推荐(0)
摘要:我们在简单工厂模式中,将实例化对象的工作推迟到了专门负责创建对象的工厂类中,这样,在我们事先预知的情况下,可以根据我们的需要动态创建产品类。但是,我们的预知是有限的,客户的变化可能是无限的。所以,就出现了问题,一旦客户的变化超越了我们的预知,我们就必须修改我们的源代码了。这是设计模式所不允许的,怎么办呢?工厂方法模式正是解决此类问题的。定义工厂方法模式又称为工厂模式,也叫虚拟构造器(VirtualConstructor)模式或者多态工厂模式(PolymorphicFactory),在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到 阅读全文
posted @ 2013-02-21 11:06 xiepeixing 阅读(237) 评论(0) 推荐(0)
摘要:简单工厂模式是类的创建模式,又叫做静态工厂方法模式。简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色:工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。具体产品角色:工厂方法模式所创 阅读全文
posted @ 2013-02-21 10:11 xiepeixing 阅读(263) 评论(0) 推荐(0)
摘要:对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。[3]如何保证一个类只有一个实例并且这个实例易于被访 阅读全文
posted @ 2013-02-20 10:26 xiepeixing 阅读(318) 评论(0) 推荐(0)