
班 级 B090501
学 号 B*******2
姓 名 高 旭 瑞
完成日期 2012-12-10
1建造者模式
1.1定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以建造不同的表示
1.2UML图
1.2.1 多个产品类的情况下的UML图
如果有多个产品类的话,应当有多个具体建造者
1.2.2省略抽象建造者角色
系统中只需要一个具体建造者,省略掉抽象建造者,结构图如下:
1.2.3省略指导者角色
抽象建造者角色已经被省略掉,还可以省略掉指导者角色。让Builder角色扮演指导者与建造者双重角色。结构图如下:
1.2.4合并建造者角色和产品角色
建造者模式失去抽象建造者角色和指导者角色后,可以进一步退化,从而失去具体建造者角色,此时具体建造者角色和产品角色合并,从而使得产品自己就是自己的建造者。这样做混淆了对象的建造者和对象本身,但是有时候一个对象有着固定的几个零件,而且永远只有这几个零件,此时将产品类和建造类合并,可以使系统简单易读,结构如下图:
1.3角色功能
命令模式包含如下角色:
1.3.1 builder:为创建一个产品对象的各个部件指定抽象接口。
1.3.2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
1.3.3 Director:构造一个使用Builder接口的对象。
1.3.4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
2命令模式
2.1定义
将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。
2.2UML图
2.3角色功能
命令模式包含如下角色:
2.3.1 Command: 抽象命令类
声明了用于执行请求的execute()等方法,通过这些方法可以调用请求接收者的相关操作
2.3.2ConcreteCommand: 具体命令类
是抽象命令类的子类,实现了在抽象命令类中声明的方法,它对应具体的接收者对象,将接收者对象的动作绑定其中
2.3.3Invoker: 调用者
即请求的发送者,又称为请求者,它通过命令对象来执行请求
2.3.4Receiver: 接收者
执行与请求相关的操作,它具体实现对请求的业务处理
3原型模式
3.1定义
原型模式就是通过一个原型对象来表明要创建的对象类型,然后用复制这个原型对象的方法来创建更多同类型的对象。
原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。
3.2UML图
原型模式的一般结构如下:
3.3角色功能
原型模式包含的角色如下:
3.3.1 客户角色:
客户调用端,客户使用原型对象复制出需要的对象。
3.3.2抽象原型角色:
定义一个原型的抽象定义,其中包含一个复制自身的接口。
3.3.3具体原型角色:
作为原型被复制的具体对象,需实现抽象原型所定义的接口。
3.3.4原型管理器角色:
该角色用于创建具体的原型类对象,并且记录每一个被创建的对象并且把已经创建过的对象保存下来。换句话说就是先创建对象并将其保存下来(由管理器完成)然后利用Clone()方法来创建新对象
4状态模式
4.1定义
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
4.2UML图
该模式的结构图:
4.3角色功能
该模式包含的角色如下:
4.3.1 Context: 环境类
又称为上下文类,它是拥有状态的对象,在环境类中维护一个抽象状态类State的实例,这个实例定义当前状态,在具体实现时,它是一个State子类的对象,可以定义初始状态
4.3.2State: 抽象状态类
用于定义一个接口以封装与环境类的一个特定状态相关的行为
4.3.3ConcreteState: 具体状态类
是抽象状态类的子类,每一个子类实现一个与环境类的一个状态相关的行为,每一个具体状态类对应环境的一个具体状态,不同的具体状态类其行为有所不同
5装饰器模式
5.1定义
动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。
5.2UML图
模式结构:
5.3角色功能
装饰模式包含如下角色:
5.3.1 Component: 抽象构件
抽象构件定义了对象的接口,可以给这些对象动态增加职责(方法)
5.3.2ConcreteComponent: 具体构件
具体构件定义了具体的构件对象,实现了在抽象构件中声明的方法,装饰器可以给它增加额外的职责(方法)
5.3.3Decorator: 抽象装饰类
抽象装饰类是抽象构件类的子类,用于给具体构件增加职责,但是具体职责在其子类中实现
5.3.4ConcreteDecorator: 具体装饰类
具体装饰类是抽象装饰类的子类,负责向构件添加新的职责。
6桥接模式
6.1定义
将抽象部分与它的实现部分分离,使它们都可以地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式
6.2UML图
该模式结构:
6.3角色功能
桥接模式包含如下角色:
6.3.1 Abstraction:抽象类
抽象类中定义了一个实现类接口类型的对象并可以维护该对象
6.3.2RefinedAbstraction:扩充抽象类
扩充抽象类扩充由抽象类定义的接口,它实现了在抽象类中定义的抽象业务方法,在扩充抽象类中可以调用在实现类接口中定义的业务方法
6.3.3Implementor:实现类接口
实现类接口定义了实现类的接口,实现类接口仅提供基本操作,而抽象类定义的接口可能会做更多更复杂的操作
6.3.4ConcreteImplementor:具体实现类
实现类接口并且具体实现它,在不同的具体实现类中提供基本操作的不同实现,在程序运行时,具体实现类对象将替换其父类对象,提供给客户端具体的业务操作方法
7适配器模式
7.1定义
将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
7.2UML图
(1)类版本结构图:
(2)对象版本结构图:
7.3角色功能
该模式参与的角色有:
7.3.1 Ta r g e t :C l i e n t使用的与特定领域相关的“接口”。
7.3.2 C l i e n t:与符合Ta rg e t接口的对象协同的专业系统。
7.3.3 A d a p t e e:一个已经存在的“接口”,它具有Client要求的功能但不符合Client的接口要求。这个接口需要适配。
7.3.4 A d a p t e r:对A d a p t e e的接口与Ta rg e t接口进行适配
8组合模式
8.1定义
组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。
8.2UML图
模式结构
8.3角色功能
组合模式包含如下角色:
8.3.1 Component: 抽象构件
抽象构件为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现
8.3.2Leaf: 叶子构件
叶子构件在组合结构中表示叶子节点对象,叶子节点没有子节点
8.3.3Composite: 容器构件
容器构件在组合结构中表示容器节点对象,容器节点包含子节点,其子节点可以是叶子节点,也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为
9中介者模式
9.1定义
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。
9.2UML图
模式结构
9.3角色功能
中介者模式包含如下角色:
9.3.1 Mediator: 抽象中介者
抽象中介者用于定义一个接口,该接口用于与各同事对象之间的通信
9.3.2ConcreteMediator: 具体中介者
具体中介者是抽象中介者的子类,通过协调各个同事对象来实现协作行为,了解并维护它的各个同事对象的引用
9.3.3Colleague: 抽象同事类
抽象同事类定义各同事的公有方法;具体同事类是抽象同事类的子类,每一个同事对象都引用一个中介者对象
9.3.4ConcreteColleague: 具体同事类
每一个同事对象在需要和其他同事对象通信时,先与中介者通信,通过中介者来间接完成与其他同事类的通信;在具体同事类中实现了在抽象同事类中定义的方法
10 抽象工厂模式
10.1 定义
10.2 UML图
10.3角色功能
10.3.1 AbstractFactory:抽象工厂:声明生成抽象产品的方法
10.3.2 ConcreteFactory:具体工厂:执行生成抽象产品的方法,生成一个具体产品
10.3.3 AbstractProduct:抽象产品:为一种产品声明接口
10.3.4Product:具体产品:定义具体工厂生成的具体产品的对象,实现产品接口
10.3.5Client:客户---应用程序,使用抽象产品和抽象工厂生成对象
11 简单工厂模式
11.1 定义
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类,而简单工厂模式实质是由一个工厂类根据传入的参量,动态的决定应该创建出哪一个产品类的实例.
11.2 UML图
11.3角色功能
11.3.1工厂角色:是简单工厂的核心,他负责实现创建所有实例内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象
11.3.2抽象产品角色:是简单工厂模式所创建的所有对象父类,他负责描述所有实例所共有的公共接口
11.3.3具体产品角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例.
