抽象工厂模式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

习题答案在暗黑破坏神III游戏中,有很多个角色可以供用户选择野蛮人、魔法师、武僧。。。要求使用工厂方法,提供给用户角色实例画类图、写父子类代码、写main方法大纲产品等级结构与产品族抽象工厂模式概述抽象工厂模式的结构与实现抽象工厂模式的应用实例开闭原则的倾斜性抽象工厂模式的优缺点与适用环境产品等级结构与产品族工厂方法模式每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销抽象工厂模式一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量产品等级结构与产品族概念产品等级结构:产品等级结构即产品的继承结构产品族:产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品产品族产品等级结构一个产品族一个产品等级结构五个产品族,分属于三个不同的产品等级结构抽象工厂模式概述模式动机当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式抽象工厂模式概述抽象工厂模式的定义对象创建型模式抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。AbstractFactoryPattern:Provideaninterfaceforcreatingfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses.抽象工厂模式概述抽象工厂模式的定义又称为工具(Kit)模式抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、更有效率抽象工厂模式的结构与实现抽象工厂模式的结构ConcreteProductA1AbstractProductAConcreteFactory1++CreateProductA()CreateProductB()...:AbstractProductA:AbstractProductBAbstractFactory++CreateProductA()CreateProductB()...:AbstractProductA:AbstractProductBClientConcreteFactory2++CreateProductA()CreateProductB()...:AbstractProductA:AbstractProductBConcreteProductA2ConcreteProductB1AbstractProductBConcreteProductB2抽象工厂模式的结构与实现抽象工厂模式的结构抽象工厂模式包含以下4个角色:•AbstractFactory(抽象工厂)•ConcreteFactory(具体工厂)•AbstractProduct(抽象产品)•ConcreteProduct(具体产品)抽象工厂模式的结构与实现抽象工厂模式的实现典型的抽象工厂类代码:abstractclassAbstractFactory{publicabstractAbstractProductACreateProductA();//工厂方法一publicabstractAbstractProductBCreateProductB();//工厂方法二……}抽象工厂模式的结构与实现抽象工厂模式的实现典型的具体工厂类代码:classConcreteFactory1:AbstractFactory{//工厂方法一publicoverrideAbstractProductACreateProductA(){returnnewConcreteProductA1();}//工厂方法二publicoverrideAbstractProductBCreateProductB(){returnnewConcreteProductB1();}……}抽象工厂暴力摩托(带武器Weapon)游戏的两种模式:普通模式:开摩托、手拿AK47魔法模式:骑扫把、手拿魔法棒开闭原则的倾斜性增加产品族对于增加新的产品族,抽象工厂模式很好地支持了开闭原则,只需要增加具体产品并对应增加一个新的具体工厂,对已有代码无须做任何修改增加新的产品等级结构对于增加新的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品的方法,违背了开闭原则抽象工厂模式的优缺点与适用环境模式优点隔离了具体类的生成,使得客户端并不需要知道什么被创建当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象增加新的产品族很方便,无须修改已有系统,符合开闭原则抽象工厂模式的优缺点与适用环境模式缺点增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了开闭原则抽象工厂模式的优缺点与适用环境模式适用环境一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节系统中有多于一个的产品族,但每次只使用其中某一产品族属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构例子穿衣风格高富帅衣服三叶草食物哈根达斯屌丝衣服班尼路食物食堂画类图写Main入口

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功