设计模式Before-after之装饰模式
来源:互联网 发布:银联快捷支付 网络支付 编辑:程序博客网 时间:2024/05/01 14:26
before.cxx
#include <iostream>class RobotCat {public:void cry(void) {std::cout << "Meow! Meow! Meow!" << std::endl;}};class RobotCatCanWalk: public RobotCat {public:void walk(void) {std::cout << "Walking..." << std::endl;}};class RobotCatCanTalk: public RobotCat {public:void talk(void) {std::cout << "Talking..." << std::endl;}};class RobotDog {public:void cry(void) {std::cout << "Woof! Woof! Woof!" << std::endl;}};class RobotDogCanWalk: public RobotDog {public:void walk(void) {std::cout << "Walking..." << std::endl;}};class RobotDogCanTalk: public RobotDog {public:void talk(void) {std::cout << "Talking..." << std::endl;}};int main(void) {RobotCatCanTalk robotCatCanTalk;robotCatCanTalk.cry();robotCatCanTalk.talk();RobotCatCanWalk robotCatCanWalk;robotCatCanWalk.cry();robotCatCanWalk.walk();// RobotDogCanTalk robotDogCanTalk;// robotDogCanTalk.cry();// robotDogCanTalk.talk();// RobotDogCanWalk robotDogCanWalk;// robotDogCanWalk.cry();// robotDogCanWalk.walk();return 0;}
after.cxx
#include <iostream>#include "config.hxx"class RobotPet {public:virtual void cry(void) = 0;};class RobotCat: public RobotPet {public:void cry(void) {std::cout << "Meow! Meow! Meow!" << std::endl;}};class RobotDog: public RobotPet {public:void cry(void) {std::cout << "Woof! Woof! Woof!" << std::endl;}};class RobotPetDecorator: public RobotPet {public:RobotPetDecorator(RobotPet &robotPet): robotPet(robotPet) {}void cry(void) {robotPet.cry();}private:RobotPet &robotPet;};class RobotPetCanTalk: public RobotPetDecorator {public:RobotPetCanTalk(RobotPet &robotPet): RobotPetDecorator(robotPet) {}void talk(void) {std::cout << "Talking..." << std::endl;}};class RobotPetCanWalk: public RobotPetDecorator {public:RobotPetCanWalk(RobotPet &robotPet): RobotPetDecorator(robotPet) {}void walk(void) {std::cout << "Walking..." << std::endl;}};int main(void) {RobotPetCanTalk robotPetCanTalk(*&_ROBOT_PET_());robotPetCanTalk.cry();robotPetCanTalk.talk();RobotPetCanWalk robotPetCanWalk(*&_ROBOT_PET_());robotPetCanWalk.cry();robotPetCanWalk.walk();}
config.hxx
#define _ROBOT_PET_ RobotCat// #define _ROBOT_PET_ RobotDog
0 0
- 设计模式Before-after之装饰模式
- 设计模式Before-after之原型模式
- 设计模式Before-after之适配器模式
- 设计模式Before-after之组合模式
- 设计模式Before-after之代理模式
- 设计模式Before-after之简单工厂模式
- 设计模式Before-after之工厂方法模式
- 设计模式Before-after之抽象工厂模式
- 设计模式Before-after之建造者模式
- 设计模式Before-after之桥接模式
- 设计模式Before-after之单例模式
- 设计模式Before-after之享元模式
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- Java与C/C++有什么区别
- SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
- 有关python中的pylab的下载安装
- 如何使用Reaver破解Wi-Fi网络的WPA密码
- python 学习 1
- 设计模式Before-after之装饰模式
- Best Time to Buy and Sell Stock II
- java CMS - FreeCMS1.7 统计分析
- 相亲前应先了解对方哪些基本资料
- 编程面试中的十个常见错误
- 单步执行请求导致属性或运算符自动的逐过程
- JavaBean
- AAM算法简介
- WinDbg命令详解--进程