单例模式 & 组合模式
发布于: 2020 年 06 月 23 日
1.单例模式
主要点就是加了一个volatile特性。
2.组合模式
数据结构部分:
#include <list>#include <string>#include <algorithm>using namespace std;class Component {public: virtual void process() = 0; virtual ~Component(){}};// tree nodeclass Composite : public Component {private: string name; list<Component*> elements;public: Composite(const string& s) : name(s) {} void add(Component* element) { this->elements.push_back(element); } void remove(Component* element) { this->elements.remove(element); } void process() { cout << (this->name) << endl; for (auto& e : elements) { e->process(); } }};// leaf nodeclass Leaf : public Component {private: string name;public: Leaf(string s) : name(s) {} void process() { cout << this->name << endl; }};int main() { Composite root("WinForm(WINDOW窗口)"); Composite frame("Frame(FRAME1)"); Leaf login("Button(登录)"); Leaf reg("Button(注册)"); Leaf logo("Picture(LOGO图片)"); Leaf user("Label(用户名)"); Leaf userTextBox("TextBox(文本框)"); Leaf passwd("Label(密码)"); Leaf passwdBox("PasswdBox(密码框)"); Leaf checkBox("CheckBox(复选框)"); Leaf textBox("TextBox(记住用户名)"); Leaf linkLabel("LinkLabel(忘记密码)"); root.add(&logo); root.add(&frame); root.add(&login); root.add(®); frame.add(&user); frame.add(&userTextBox); frame.add(&passwd); frame.add(&passwdBox); frame.add(&checkBox); frame.add(&textBox); frame.add(&linkLabel); root.process();}
g++ 1.cc -std=c++11
./a.out,结果如下图:
划线
评论
复制
发布于: 2020 年 06 月 23 日阅读数: 52
版权声明: 本文为 InfoQ 作者【朱月俊】的原创文章。
原文链接:【http://xie.infoq.cn/article/6f98ae641b113be8623de056f】。文章转载请联系作者。
朱月俊
关注
还未添加个人签名 2017.11.06 加入
还未添加个人简介
评论