架构师训练营 -- 第三周作业
发布于: 2020 年 06 月 23 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
输出:
程序:
#include <iostream>#include <string>#include <vector>using namespace std;class ShowInterface {public: virtual void show() = 0 {}; virtual ~ShowInterface() = 0 {};};class LeafComponent : public ShowInterface {public: LeafComponent(string name) { m_name = name; } void show() { cout << m_name << endl; }private: string m_name;};class NodeComponent : public ShowInterface {public: NodeComponent(string name) { m_name = name; } void addSub(ShowInterface* sub) { m_subs.push_back(sub); } void show() { cout << m_name << endl; for (vector<ShowInterface *>::iterator it = m_subs.begin(); it != m_subs.end(); ++it) { (*it)->show(); } }private: vector<ShowInterface *> m_subs; string m_name;};int main(){ NodeComponent winForm("WinForm"); LeafComponent picture("Picture(LOGO图片)"); winForm.addSub(&picture); LeafComponent loginButton("Button(登录)"); winForm.addSub(&loginButton); LeafComponent registerbutton("Button(注册)"); winForm.addSub(®isterbutton); NodeComponent frame("FRAME"); LeafComponent nameLabel("Label用户名"); frame.addSub(&nameLabel); LeafComponent nameTextBox("TextBox(文本框)"); frame.addSub(&nameTextBox); LeafComponent psswordLabel("Lable(密码)"); frame.addSub(&psswordLabel); LeafComponent passwordBox("PasswordBox(密码框)"); frame.addSub(&passwordBox); LeafComponent checkBox("CheckBox(复选框)"); frame.addSub(&checkBox); LeafComponent textBox("TextBox(记住用户名)"); frame.addSub(&textBox); LeafComponent linkLable("LinkLable(忘记密码)"); frame.addSub(&linkLable); winForm.addSub(&frame); winForm.show(); return 0;}
划线
评论
复制
发布于: 2020 年 06 月 23 日阅读数: 41
stardust20
关注
还未添加个人签名 2019.11.18 加入
还未添加个人简介
评论