[GoF设计模式]抽象工厂模式和Command模式的C++实现
来源:互联网 发布:见兄自然知悌什么意思 编辑:程序博客网 时间:2024/05/16 19:11
1-【抽象工厂模式】
图解:
简单工厂,工厂方法模式 , 抽象工厂模式
共同点: 1- 封装对象的创建,2-减少应用程序与具体类之间的以来,松耦合
特点:
简单工厂(单个Pizza店)
工厂方法模式(Pizza 连锁店 )
使用 继承 ,把对象的创建委托给子类NewYorkPizzaStrore ,
子类实现工厂方法createPizza () 来创建具体的对象 NewYorkCheesePizza 。
抽象工厂模式(Pizza店原料工厂 )
抽象工厂创建相关的对象家族ChessePizza【以“原来工厂”为参数 】,而不是依赖他们的具体类NewYorkCheesPizza
使用对象 组合 【Pizza由Dough和Sauce组成 】, 对象的创建被实现在工厂接口
PizzaIngredientFactory 所暴露的方法中
pizza->Dough = createDough ();
pizza->Sauce = createSauce ();
C++代码实现:
PotatoPizza.h和ChessPizza.h类似,只写出ChessPizza.h
Sauce.h和Dough.h类似,ChicagoSauce.h和ChicagoDough.h类似,NewYorkDough.h和NewYorkSauce.h类似,只列出其一
ChicagoIngredientFactory.h和NewYorkIngredientFactory.h类似,只列出其一
ChicagoPizzaStore.h和NewYorkPizzaStore.h类似,只列出其一
输出:
ebug/GoF-AbstractFactory.exe
***********THERE IS A CLIENT ORDER PIZZA**********
=========== Chicago Ingredient Factory ==========
Ingredient:ChicagoDough being created......
Ingredient:ChicagoSauce being created......
=========== Now In Chicago Pizza Store ==========
ChessPizza:Doing 1-prepare......
:Doing 2-bake......
:Doing 3-cut......
:Doing 4-box......
*******************PIZZA PREPARED*****************
***********THERE IS A CLIENT ORDER PIZZA**********
=========== Chicago Ingredient Factory ==========
Ingredient:ChicagoDough being created......
Ingredient:ChicagoSauce being created......
=========== Now In Chicago Pizza Store ==========
PotatPizza:Doing 1-prepare......
:Doing 2-bake......
:Doing 3-cut......
:Doing 4-box......
*******************PIZZA PREPARED*****************
***********THERE IS A CLIENT ORDER PIZZA**********
=========== NewYork Ingredient Factory ==========
Ingredient:NewYorkDough being created......
Ingredient:NewYorkSauce being created......
=========== Now In NewYork Pizza Store ==========
ChessPizza:Doing 1-prepare......
:Doing 2-bake......
:Doing 3-cut......
:Doing 4-box......
*******************PIZZA PREPARED*****************
***********THERE IS A CLIENT ORDER PIZZA**********
=========== NewYork Ingredient Factory ==========
Ingredient:NewYorkDough being created......
Ingredient:NewYorkSauce being created......
=========== Now In NewYork Pizza Store ==========
PotatPizza:Doing 1-prepare......
:Doing 2-bake......
:Doing 3-cut......
:Doing 4-box......
*******************PIZZA PREPARED*****************
2-【Command模式】
目的是将“行为的请求者”和“行为的实现者”解耦。
图解:
输出:
ake -f "Makefile" CFG=Debug
g++ -c -g -o "Debug/GoF-Command.o" "GoF-Command.cpp"
g++ -g -o "Debug/GoF-Command.exe" Debug/GoF-Command.o
Debug/GoF-Command.exe
Now Set Command: TRUE
Light State: On!
Now Set Command: FALSE
Light State: Off!
Now On Button was pushed
Light State: On!
Now Off Button was pushed
Light State: Off!
- [GoF设计模式]抽象工厂模式和Command模式的C++实现
- GOF设计模式-抽象工厂
- GoF设计模式学习-抽象工厂模式
- [Gof设计模式]简单工厂模式和工厂模式的C++实现
- GoF设计模式:StaticFactory抽象工厂
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- GOF设计模式-工厂模式
- 设计模式--工厂模式和抽象工厂
- GOF 设计模式之 Command
- 笔记:Gof设计模式--Command
- C语言和设计模式(抽象工厂模式)
- C语言和设计模式(抽象工厂模式)
- C语言和设计模式(抽象工厂模式)
- C语言和设计模式(抽象工厂模式)
- 18.C语言和设计模式(抽象工厂模式)
- 9、C语言和设计模式(抽象工厂模式)
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于原型的工厂
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于类的工厂
- 【笔记】wincap收集并统计网络流量
- Linux内核模块/驱动编程基础
- Pocket PC Dialog Full Screen
- ucos-ii ARM几种移植版本
- Fluent Scheme 之 GUI 命令
- [GoF设计模式]抽象工厂模式和Command模式的C++实现
- java集合框架图及介绍
- JAVA集合类(大公司面试喜欢问的)
- 信号和槽
- Linux系统各种格式文件压缩与解压方法
- php 死循环症状
- jquery和prototype冲突解决
- DES介绍
- 青岛的海的天空-顺