笔记:Gof设计模式--Abstract Factory
来源:互联网 发布:数控加工中心编程招聘 编辑:程序博客网 时间:2024/06/16 01:49
1、意图
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
2、适应性
Use the Abstract Factory pattern when ••
• a system should be independent of how its products are created, composed, and represented.
• a system should be configured with one of multiple families of products.
• a family of related product objects is designed to be used together, and you need to enforce this constraint.
•you want to provide a class library of products, and you want to reveal just their interfaces, not their implementations.•
3、结构
4、示例代码
class MazeFactory { public: MazeFactory(); virtual Maze* MakeMaze() const { return new Maze; } virtual Wall* MakeWall() const { return new Wall; } virtual Room* MakeRoom(int n) const { return new Room(n); } virtual Door* MakeDoor(Room* r1, Room* r2) const { return new Door(r1, r2); } };
class EnchantedMazeFactory : public MazeFactory { public: EnchantedMazeFactory(); virtual Room* MakeRoom(int n) const { return new EnchantedRoom(n, CastSpell()); } virtual Door* MakeDoor(Room* r1, Room* r2) const { return new DoorNeedingSpell(r1, r2); } protected: Spell* CastSpell() const; };
Maze* MazeGame::CreateMaze (MazeFactory& factory) { Maze* aMaze = factory.MakeMaze(); Room* r1 = factory.MakeRoom(1); Room* r2 = factory.MakeRoom(2); Door* aDoor = factory.MakeDoor(r1, r2); aMaze->AddRoom(r1); aMaze->AddRoom(r2); r1->SetSide(North, factory.MakeWall()); r1->SetSide(East, aDoor); r1->SetSide(South, factory.MakeWall()); r1->SetSide(West, factory.MakeWall()); r2->SetSide(North, factory.MakeWall()); r2->SetSide(East, factory.MakeWall()); r2->SetSide(South, factory.MakeWall()); r2->SetSide(West, aDoor); return aMaze; }
- 笔记:Gof设计模式--Abstract Factory
- 笔记:Gof设计模式--Factory Method
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式学习笔记-Abstract Factory
- 设计模式(Abstract Factory)
- 设计模式-Abstract Factory
- 设计模式--Abstract Factory
- GOF设计模式-创建型模式理解与思索(一)(Abstract Factory 和Builder)
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:抽象工厂接口
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:用户界面工具包
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于原型的工厂
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于类的工厂
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:参数化的工厂
- GoF之Abstract Factory
- 设计模式-Abstract Factory模式
- 设计模式 - Abstract Factory模式
- POJ 1062 DijStra 变形 枚举
- 计算机学习心得
- 操作系统——存储
- 生成并运行按钮
- bugzilla不能发送邮件问题
- 笔记:Gof设计模式--Abstract Factory
- 计算机学习心得
- 计算机
- 装修日记
- 计算机学习心得
- 大小写转换
- 。。。
- Linux内核tty设备
- 判断出生日期是周几