
Design Pattern
文章平均质量分 81
diandian82
这个作者很懒,什么都没留下…
展开
-
状态模式
来看一下状态模式的角色组成吧:1) 使用环境(Context)角色:客户程序是通过它来满足自己的需求。它定义了客户程序需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。 2) 状态(State)角色:定义一个接口以封装与使用环境角色的一个特定状态相关的行为。3) 具体状态(Concrete State)角色:实现状态角色定义的接口下面是GOF在《设计模式》中给出的状态模式的原创 2007-04-11 15:48:00 · 724 阅读 · 0 评论 -
合成模式(Composite Pattern)
对象的树结构一个树结构由两种节点组成:树枝节点和树叶节点。树枝节点可以有子节点,而一个树叶节点不可以有子节点。除了根节点外,其它节点有且只有一个父节点。注意:一个树枝节点可以不带任何叶子,但是它因为有带叶子的能力,因此仍然是树枝节点,而不会成为叶节点。一个树叶节点永远不可能带有子节点。二、 合成模式概述下图所示的类图省略了各个角色的细节。 可以看出,上面的类图结构涉及到三个原创 2007-04-28 12:37:00 · 958 阅读 · 0 评论 -
外观模式(Facade Pattern)
什么是门面模式门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。就如同医院的接待员一样,门面模式的门面类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与门面对象打交道,而不需要与子系统内部的很多对象打交道。二、 门面模式的结构门面模式是对象的结构模式。门面模式没有一个一般化的类图描述,原创 2007-04-27 10:34:00 · 1022 阅读 · 0 评论 -
代理模式(Proxy Pattern)
如果按照使用目的来划分,代理有以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。 虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。 Copy-on-Write代理:虚拟原创 2007-04-24 10:39:00 · 789 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
桥梁模式的用意【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待【LISKOV94】。实现化原创 2007-04-26 09:26:00 · 670 阅读 · 0 评论 -
观察者(Observer)模式
一、 观察者(Observer)模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。做到这一点的设计方案有很多,但是为了使系统能够易于复用,应该选择低耦合度的设计方案。减少对象之间的耦合有利于系统的复原创 2007-04-26 09:23:00 · 633 阅读 · 0 评论 -
中介者模式(Mediator pattern)
定义与结构 GOF给中介者模式下的定义是:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。 当然并不是所有的对象都需要加入“中介”对象。如果对象之间的关系原本一目了然,中介对象的加入便是“画蛇添原创 2007-04-25 09:24:00 · 736 阅读 · 0 评论 -
职责链模式(Chain of Responsibility Pattern)
抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。责任链模式的示意性源代码 // Chain原创 2007-04-23 16:30:00 · 572 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
抽象工厂(Abstract Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。具体工厂(Concrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,原创 2007-04-17 11:15:00 · 627 阅读 · 0 评论 -
生成器模式(Builder Pattern)
建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者(ConcreteBuilder)角色。具体建造者类必须实现这个接口所要求的方法:一个是建造方法,另一个是结果返还方法。具体建造者(Concrete Builder)角色:担任这个角色的是于应用程序紧密相关的类,它们在应用程序调用下创原创 2007-04-19 13:22:00 · 626 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。抽象产品(Product)角色:工厂方法模式所创建原创 2007-04-18 10:41:00 · 607 阅读 · 0 评论 -
原型模式(Prototype Pattern)
在C#里面,我们可以很容易的通过Clone()方法实现原型模式。任何类,只要想支持克隆,必须实现C#中的ICloneable接口。ICloneable接口中有一Clone方法,可以在类中复写实现自定义的克隆方法。克隆的实现方法有两种:浅拷贝(shallow copy)与深拷贝(deep copy)。(以下摘自:《.NET框架程序设计(修订版)》,李建忠译)浅拷贝是指当对象的字段值被拷贝时,字段原创 2007-04-18 10:26:00 · 836 阅读 · 0 评论 -
命令(Command)模式
命令模式涉及到五个角色,它们分别是: 客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。 具体命令(ConcreteCommand)角色:定义一个接受者和行为之间的弱耦合;实现Execute()方法,负责调用接收考的相应操作。E原创 2007-04-16 10:16:00 · 780 阅读 · 0 评论 -
装饰模式(Decorator/Wrapper Pattern)
抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。 装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。 具体装饰(Concrete Decorator)角色:负责给构件对象"贴上"附加的责任。原创 2007-04-13 10:43:00 · 961 阅读 · 0 评论 -
访问者(Visitor)模式
Eg. Code 1: // Visitor pattern -- Structural example using System;using System.Collections;// "Visitor"abstract class Visitor...{ // Methods abstract public void VisitConcreteElementA(原创 2007-04-12 10:32:00 · 560 阅读 · 0 评论 -
策略模式
在下面的情况下应当考虑使用策略模式:1. 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。2. 一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些具体算法类都是一个抽象算法类的子类。换言之,这些具体算法类均有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类,并原创 2007-04-11 16:21:00 · 958 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
一、 适配器(Adapter)模式适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。名称由来这很像变压器(Adapter),变压器把一种电压变换成另一种电压。美国的生活用电电压是110V,而中国的电压是220V。如果要在中国使用美国电器,就必须有一个能把220V电压转换成110V电压的变压器。这个变压器就是一个Adapt原创 2007-04-28 12:43:00 · 797 阅读 · 0 评论