架构师训练营 -- 第三周作业

用户头像
stardust20
关注
发布于: 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(&registerbutton);

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;
}



用户头像

stardust20

关注

还未添加个人签名 2019.11.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 -- 第三周作业