设计模式第三周作业「架构师训练营第 1 期」

用户头像
天天向善
关注
发布于: 2020 年 10 月 03 日

作业一:请在草稿纸上手写一个单例模式的实现代码。



作业二:请用组合设计模式编写程序,打印输出图1的窗口, 窗口组件的树结构如图2所示。



 

类图如下,定义一个抽像Element类,各个组件继承这个类,对于winForm与Frame为容器类,为整体与部分的关系,所以都有一个元素集合,都使用统一处理逻辑



 

代码如下

 

public abstract class Element {
protected String id;
protected String value;
//渲染
public abstract void draw();
}
public class WinForm extends Element{
List<Element> subNodes = new ArrayList<>();
public WinForm(String value) {
this.value = value;
}
public WinForm(){
}
public void addSub(Element element){
subNodes.add(element);
}
@Override
public void draw() {
System.out.println("print winForm "+value);
for (Element subNode : subNodes) {
subNode.draw();
}
}
}
public class Frame extends Element{
List<Element> subNodes = new ArrayList<>();
public Frame(String value) {
this.value = value;
}
public Frame(){
}
public void addSub(Element element){
subNodes.add(element);
}
@Override
public void draw() {
System.out.println("print frame "+value);
for (Element subNode : subNodes) {
subNode.draw();
}
}
}
public class Button extends Element{
public Button(String value) {
this.value = value;
}
public Button(){
}
@Override
public void draw() {
System.out.println("print button "+value);
}
}
其它label textbox等组件同button
public class Client {
public static void main(String[] args) {
WinForm winForm = new WinForm("window窗口");
Picture picture = new Picture("logo图片");
Button loginbtn = new Button("登录");
Button regbtn = new Button("注册");
Frame frame = new Frame("frame1");
Label label = new Label("用户名");
TextBox textBox = new TextBox("文本框");
Label pwdlabel = new Label("密码");
PasswordBox passwordBox = new PasswordBox("密码框");
CheckBox checkBox = new CheckBox("复选框");
Label remeberlabel = new Label("记住用户名");
LinkLabel linkLabel = new LinkLabel("忘记密码");
winForm.addSub(picture);
winForm.addSub(loginbtn);
winForm.addSub(regbtn);
winForm.addSub(frame);
frame.addSub(label);
frame.addSub(textBox);
frame.addSub(pwdlabel);
frame.addSub(passwordBox);
frame.addSub(checkBox);
frame.addSub(remeberlabel);
frame.addSub(linkLabel);
winForm.draw();
}
}



发布于: 2020 年 10 月 03 日 阅读数: 17
用户头像

天天向善

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
设计模式第三周作业「架构师训练营第 1 期」