• / 6
  • 下载费用:10 金币  

抽象工厂模式.doc

关 键 词:
抽象工厂模式.doc
资源描述:
抽象工厂模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向具体产品提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。为 了 方 便 引 进 抽 象 工 厂 模 式 , 引 进 一 个 新 概 念 : 产 品 族 ( Product Family) 。 所 谓 产 品 族 , 是 指 位 于 不同 产 品 等 级 结 构 , 功 能 相 关 联 的 产 品 组 成 的 家 族 。 所 谓 的 抽 象 工 厂 是 指 一 个 工 厂 等 级 结 构 可 以 创 建 出 分 属 于 不 同 产 品 等 级 结 构 的 一 个 产 品 族 中 的 所 有 对 象 。抽 象 工 厂 模 式 (Abstract Factory Pattern): 提 供 一 个 创 建 一 系 列 相 关 或 相 互 依 赖 对 象 的 接 口 , 而 无需 指 定 它 们 具 体 的 类 。 抽 象 工 厂 模 式 又 称 为 Kit 模 式 , 属 于 对 象 创 建 型 模 式 。抽象工厂(Abstract Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。具体工厂(Concrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。具体产品(Concrete Product)角色:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。抽象工厂模式的主要优点是隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。另外,应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。增加新的工厂和新的产品族很方便。在以下情况下可以使用抽象工厂模式:一个系统不应当依赖于产品类实例如何被创建、 组合和表达的细节,这对于所有形态的工厂模式都是重要的。 系统有多于一个的产品族,而客户端只消费其中某一产品族。 属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现游戏中使用抽象工厂的地方有: 基本上任何有批量的同类形式的子件地方就会有工厂的存在。(实例工厂就是工厂,而抽象工厂仅仅是工厂的一个抽象层而已。)在游戏中,比如有一些场景,可是场景有很多类型,但是所有的具体场景都有相同的共性(如房屋,植物等),将这些共性抽取出来,形成一个抽象类,然后在程序中具体实现该类,这样一个抽象类就是一个简单的抽象工厂1:例如,在音频方面,一个音频的抽象工厂派生出不同的工厂,有音乐工厂,音效工厂。音效工厂中又有一个创建 3D 音效节点的方法,一个创建普通音效节点的方法。最终用户只需要 SoundFactory-Create3DNode( pFileName );就可以创建一个节点了。2:场景对象。3:渲染对象。程 序 实 现Factory.h#include //class Food{public:Food() {}virtual ~Food() {}public:virtual std::string getName() { return _name; } protected:std::string _name;};//class Burger : public Food{public:Burger() {}Burger(std::string name) { _name = name; }virtual ~Burger() {}};//class Chips : public Food{public:Chips() {}Chips(std::string name) { _name = name; }virtual ~Chips(){}};//class ChickenWing : public Food{public:ChickenWi
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:抽象工厂模式.doc
链接地址:https://www.weizhuannet.com/p-7313136.html
微传网是一个办公文档、学习资料下载的在线文档分享平台

微传网博客

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开