随笔分类 -  设计模式

摘要:共有两类适配器模式:对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。类适配器模式-- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four客户:需要调用我们的代码的对象。Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。(1)类适配器:当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通 阅读全文
posted @ 2013-07-24 21:41 走到天亮 阅读(194) 评论(0) 推荐(0)
摘要:什么是门面模式门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。就如同医院的接待员一样,门面模式的门面类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道。类图:实例: public class FacadeMode { public void test() { new MoudelA().testc(); new MoudelB().testc(); } } p... 阅读全文
posted @ 2013-07-24 15:39 走到天亮 阅读(342) 评论(0) 推荐(0)
摘要:抽象工厂模式的优点 抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理。抽象工厂模式的缺点 产品族的扩展将是一件十分费力的事情,假如产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改。所以使用抽象工厂模式时,对产品等级结构的划分是非常重要的。适用场景 当需要创建的对象是一系列相互关联或相互依赖的产品族时,便可以使用抽象工厂模式。说的更明白一点,就是一个继承体系中,如果存在着多个等级结构(即存在 着多个抽象 阅读全文
posted @ 2013-07-22 23:08 走到天亮 阅读(284) 评论(0) 推荐(0)
摘要:单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。证一个类仅有一个实例,并提供一个访问它的全局访问点。类图:试例: public class Singleton { static Singleton single; private Singleton() { } public static Singleton getSingleton(){ if (single == null) { single = new Sing... 阅读全文
posted @ 2013-07-18 21:07 走到天亮 阅读(263) 评论(0) 推荐(0)
摘要:代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做Proxy或Surrogate,中文都可译成"代理"。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。类图:实例:代理执行远程方法 public interface IMath { // Methods double Add(double x, double y); double Sub(double x, double y)... 阅读全文
posted @ 2013-07-17 23:36 走到天亮 阅读(347) 评论(0) 推荐(0)
摘要:策略模式:策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式可使得算法能独立于使用它的客户而变化。通用类图:实例:商品折扣计算 class Program { static void Main(string[] args) { ShopCart sc = new ShopCart(new ProudctA()); sc.doSomthing(); sc = new ShopCart(new ProudctB()); sc.doSomthing();... 阅读全文
posted @ 2013-07-17 21:57 走到天亮 阅读(310) 评论(0) 推荐(0)