架构师训练营 作业 3
发布于: 2020 年 11 月 08 日
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
class WindowForm {
public:
WindowForm() {};
virtual void Print() = 0;
};
class Picture : public WindowForm {
public:
Picture(imag) : WindowForm(), imag(imag) {};
void Print() {
// Print Logo picture;
};
private:
imag;
};
class Button : public WindowForm {
public:
Button(std::string label) : WindowForm(), label(label) {};
void Print() {
// Print button;
}
private:
std::string label;
}
class Frame : public WindowForm {
public:
Frame() : WindowForm() {};
void AddComponent(WindowForm element) {
frameVec.push_back(element);
}
void Print() {
for (auto &elem : frameVec) {
elem.Print();
}
}
private:
std::vector<WindowForm> frameVec;
};
class Label : public Frame {
public:
Label(std::string msg) : Frame(), msg(msg) {};
void Print() {
// Print Lable
}
private:
std::string msg;
};
class LinkLable : public Label {
public:
LinkLable(link, std::string msg) : Label(msg), link(link) {};
void Print() {
// Print LinkLabel;
}
private:
link;
};
class Box : public Frame {
public:
Box() : Frame() {}
void Print() {
// Print box;
}
};
class TextBox : public Box {
public:
TextBox(std::string text) : Box(), text(text) {}
void Print () {
// print TextBox;
}
private:
std::string text;
};
class PasswdBox : public Box {
PasswdBox() : Box() {};
void Print() {
// Print PasswdBox
}
};
class CheckBox : public Box {
CheckBox() : Box() {};
void Print() {
// Print CheckBox;
}
};
复制代码
划线
评论
复制
发布于: 2020 年 11 月 08 日阅读数: 37
版权声明: 本文为 InfoQ 作者【Arthur】的原创文章。
原文链接:【http://xie.infoq.cn/article/54b596df6152cdc0e94a49076】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
Arthur
关注
Every Step Counts 2019.12.13 加入
还未添加个人简介
评论