-
说明
-
案例
-
书接上回
- 鞋贩子出席漫展,去
cosplay。 - 自己给自己加服饰造型,服饰即装饰的东西。
- 鞋贩子出席漫展,去
-
代码
#include <iostream> #include <vector> #include <string> class Decorator { public: virtual std::string show() = 0; }; class MaoZi : public Decorator { public: MaoZi(Decorator* dec):dec_(dec){} std::string show() { std::string temp = "maozi"; if(dec_) { temp += "shang you yi ge " + dec_->show(); } return temp; } private: Decorator* dec_; }; class PiDai : public Decorator { public: PiDai(Decorator* dec):dec_(dec){} std::string show() { std::string temp = "pidai"; if(dec_) { temp += "shang you yi ge " + dec_->show(); } return temp; } private: Decorator* dec_; }; class XieZi : public Decorator { public: XieZi(Decorator* dec):dec_(dec){} std::string show() { std::string temp = "xiezi"; if(dec_) { temp += "shang you yi ge " + dec_->show(); } return temp; } private: Decorator* dec_; }; class TieHua : public Decorator { public: TieHua(){} std::string show() { return "tiehua"; } }; class PiKaQiu : public Decorator { public: PiKaQiu(){} std::string show() { return "pi ka qiu"; } }; class XieFanZi { public: XieFanZi(Decorator* zhuangshi = nullptr):maozi(new MaoZi(zhuangshi)), xiezi(new XieZi(zhuangshi)), pidai(new PiDai(zhuangshi)){} void show() { std::cout << maozi->show() << std::endl; std::cout << xiezi->show() << std::endl; std::cout << pidai->show() << std::endl; } private: Decorator* maozi; Decorator* xiezi; Decorator* pidai; }; int main() { { XieFanZi cosplay(new TieHua()); cosplay.show(); } { XieFanZi cosplay(new PiKaQiu()); cosplay.show(); } } -
说明
- 鞋贩子给的鞋子帽子皮带都贴了一张贴画。
- 然后还有一套都贴了皮卡丘。
-
-
总结
C++ 11 装饰器模式
最新推荐文章于 2025-03-11 00:18:24 发布
630

被折叠的 条评论
为什么被折叠?



