架构师训练营 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
版权声明: 本文为 InfoQ 作者【IT老兵重开始】的原创文章。
原文链接:【http://xie.infoq.cn/article/4bd0c45465940db3a702c4b11】。未经作者许可,禁止转载。
IT老兵重开始
关注
IT老兵 2018.04.25 加入
还未添加个人简介
评论