软件开发技术课程报告————————————————————————————————作者:————————————————————————————————日期:软件开发技术课程报告班级B090501学号B09050112姓名高旭瑞完成日期2012-12-10目录1建造者模式 (1)1.1定义 (1)1.2UML图 (1)1.3角色功能 (2)2命令模式 (3)2.1定义 (3)2.2UML图 (3)2.3角色功能 (3)3原型模式 (4)3.1定义 (4)3.2UML图 (4)3.3角色功能 (4)4状态模式 (5)4.1定义 (5)4.2UML图 (5)4.3角色功能 (5)5装饰器模式 (6)5.1定义 (6)5.2UML图 (6)5.3角色功能 (6)6桥接模式 (7)6.1定义 (7)6.2UML图 (7)6.3角色功能 (7)7适配器模式 (8)7.1定义 (8)7.2UML图 (8)7.3角色功能 (8)8组合模式 (9)8.1定义 (9)8.2UML图 (9)8.3角色功能 (9)9中介者模式 (10)9.1定义 (10)9.2UML图 (10)9.3角色功能 (10)10 抽象工厂模式 (11)10.1定义 (11)10.2UML图 (11)10.3角色功能 (11)11 简单工厂模式 (12)11.1定义 (12)11.2UML图 (12)11.3角色功能 (12)1建造者模式1.1 定义将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以建造不同的表示1.2 UML图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.1定义将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。
2.2 UML 图receiverInvokerCommand +execute ()...ConcreteCommand -state : +execute ()...Receiver +action ()...Client receiver.action();2.3 角色功能命令模式包含如下角色: 2.3.1 Command: 抽象命令类声明了用于执行请求的execute()等方法,通过这些方法可以调用请求接收者的相关操作 2.3.2ConcreteCommand: 具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,它对应具体的接收者对象,将接收者对象的动作绑定其中 2.3.3Invoker: 调用者即请求的发送者,又称为请求者,它通过命令对象来执行请求 2.3.4Receiver: 接收者执行与请求相关的操作,它具体实现对请求的业务处理3.1定义原型模式就是通过一个原型对象来表明要创建的对象类型,然后用复制这个原型对象的方法来创建更多同类型的对象。
原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。
3.2 UML图原型模式的一般结构如下:3.3 角色功能原型模式包含的角色如下:3.3.1 客户角色:客户调用端,客户使用原型对象复制出需要的对象。
3.3.2抽象原型角色:定义一个原型的抽象定义,其中包含一个复制自身的接口。
3.3.3具体原型角色:作为原型被复制的具体对象,需实现抽象原型所定义的接口。
3.3.4原型管理器角色:该角色用于创建具体的原型类对象,并且记录每一个被创建的对象并且把已经创建过的对象保存下来。
换句话说就是先创建对象并将其保存下来(由管理器完成)然后利用Clone()方法来创建新对象4状态模式4.1 定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
4.2 UML 图该模式的结构图:stateContext-state : State ++request ()setState (State state)...State +handle ()...ConcreteStateA +handle ()...ConcreteStateB +handle ().........state.handle();......4.3 角色功能该模式包含的角色如下: 4.3.1 Context: 环境类又称为上下文类,它是拥有状态的对象,在环境类中维护一个抽象状态类State 的实例,这个实例定义当前状态,在具体实现时,它是一个State 子类的对象,可以定义初始状态 4.3.2State: 抽象状态类用于定义一个接口以封装与环境类的一个特定状态相关的行为 4.3.3ConcreteState: 具体状态类是抽象状态类的子类,每一个子类实现一个与环境类的一个状态相关的行为,每一个具体状态类对应环境的一个具体状态,不同的具体状态类其行为有所不同5 装饰器模式5.1 定义动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。
其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。
5.2 UML 图模式结构:componentComponent +operation ()...ConcreteComponent +operation ()...Decorator +operation ()...component.operation();ConcreteDecoratorA -addedState : +operation ()...ConcreteDecoratorB ++operation ()addedBehavior ()...super.operation();addedBehavior();5.3 角色功能装饰模式包含如下角色: 5.3.1 Component: 抽象构件抽象构件定义了对象的接口,可以给这些对象动态增加职责(方法) 5.3.2ConcreteComponent: 具体构件具体构件定义了具体的构件对象,实现了在抽象构件中声明的方法,装饰器可以给它增加额外的职责(方法) 5.3.3Decorator: 抽象装饰类抽象装饰类是抽象构件类的子类,用于给具体构件增加职责,但是具体职责在其子类中实现 5.3.4ConcreteDecorator: 具体装饰类具体装饰类是抽象装饰类的子类,负责向构件添加新的职责。
6 桥接模式6.1 定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。
它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式6.2 UML 图该模式结构:implClientAbstraction +operation ()...Implementor +operationImpl ()...RefinedAbstraction +operation ()...ConcreteImplementorA +operationImpl ()...ConcreteImplementorB +operationImpl ()...6.3 角色功能桥接模式包含如下角色: 6.3.1 Abstraction :抽象类抽象类中定义了一个实现类接口类型的对象并可以维护该对象 6.3.2RefinedAbstraction :扩充抽象类扩充抽象类扩充由抽象类定义的接口,它实现了在抽象类中定义的抽象业务方法,在扩充抽象类中可以调用在实现类接口中定义的业务方法 6.3.3Implementor :实现类接口实现类接口定义了实现类的接口,实现类接口仅提供基本操作,而抽象类定义的接口可能会做更多更复杂的操作 6.3.4ConcreteImplementor :具体实现类实现类接口并且具体实现它,在不同的具体实现类中提供基本操作的不同实现,在程序运行时,具体实现类对象将替换其父类对象,提供给客户端具体的业务操作方法7适配器模式7.1 定义将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
7.2 UML图(1)类版本结构图:(2)对象版本结构图:7.3 角色功能该模式参与的角色有:7.3.1Ta 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.2 UML 图模式结构childrenClientComponent++++operation ()add (Component c)remove (Component c)getChild (int i)...Leaf +operation ()...Composite ++++operation ()add (Component c)remove (Component c)getChild (int i)...for(Component child:children){child.operation();}8.3 角色功能组合模式包含如下角色: 8.3.1 Component: 抽象构件抽象构件为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现8.3.2Leaf: 叶子构件叶子构件在组合结构中表示叶子节点对象,叶子节点没有子节点8.3.3Composite: 容器构件容器构件在组合结构中表示容器节点对象,容器节点包含子节点,其子节点可以是叶子节点,也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为9中介者模式9.1定义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。