写点什么

架构师训练营 Week03 作业

发布于: 2020 年 10 月 04 日

1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。





2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。





2.1 实现代码

本题目根据组合设计模式实现,代码为接口类Component和实现类Node,具体代码如下:

Component类代码:

package com.dd.week03;
/**
* 接口类,用来表示所有组件
* 用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
*
*/
public interface Component {
public void draw();
public void addChild(Component child);
}



Node类代码:

package com.dd.week03;
import java.util.List;
import java.util.ArrayList;
/**
* 节点类,实现Component
* 用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
*/
public class Node implements Component {
List<Component> children;
String tag;
String value;
public Node(String tag, String value) {
this.tag = tag;
this.value = value;
this.children = new ArrayList<Component>();
}
/**
* 添加子节点
*
* @param child
*/
public void addChild(Component child) {
this.children.add(child);
}
/**
* 打印输出
* 如有子节点,递归打印输出
*/
public void draw() {
System.out.println("print " + this.tag + " (" + this.value + ")");
for (Component child : this.children) {
child.draw();
}
}
/**
* @param args
*/
public static void main(String[] args) {
//构建组件树
Component winForm = new Node("WinForm", "Window窗口");
Component picture = new Node("Picture", "Logo图片");
Component login = new Node("Button", "登录");
Component register = new Node("Button", "注册");
Component frame = new Node("Frame", "FRAME1");
Component label1 = new Node("Label", "用户名");
Component textBox1 = new Node("TextBox", "文本框");
Component label2 = new Node("Lable", "密码");
Component passwordBox = new Node("PassWordBox", "密码框");
Component checkbox = new Node("CheckBox", "复选框");
Component textBox2 = new Node("TextBox", "记住用户名");
Component linkLabel = new Node("LinkLabel", "忘记密码");
frame.addChild(label1);
frame.addChild(textBox1);
frame.addChild(label2);
frame.addChild(passwordBox);
frame.addChild(checkbox);
frame.addChild(textBox2);
frame.addChild(linkLabel);
winForm.addChild(picture);
winForm.addChild(login);
winForm.addChild(register);
winForm.addChild(frame);
// 打印输出
winForm.draw();
}
}



2.2 程序运行输出

print WinForm (Window窗口)
print Picture (Logo图片)
print Button (登录)
print Button (注册)
print Frame (FRAME1)
print Label (用户名)
print TextBox (文本框)
print Lable (密码)
print PassWordBox (密码框)
print CheckBox (复选框)
print TextBox (记住用户名)
print LinkLabel (忘记密码)



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

IT老兵 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营Week03作业