【架构师训练营】第 3 周作业
发布于: 2020 年 06 月 24 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
/** * * 组件 * @Author peanutnowing * @Date 2020/6/23 */public interface Component { /** * 展示组件 */ void displayComponent();}
/** * 容器 * * @Author peanutnowing * @Date 2020/6/23 */public class Container implements Component { private String name; private List<Component> componentList; public Container(String name, List<Component> components){ this.componentList = new ArrayList<Component>(); this.name = name; this.componentList.addAll(components); } public void addComponent(Component component) { this.componentList.add(component); } @Override public void displayComponent() { System.out.println("print "+name); this.componentList.forEach(part -> part.displayComponent()); }}
/** * * 简单组件 * @Author peanutnowing * @Date 2020/6/23 */public class SimpleComponent implements Component{ private String name; public SimpleComponent(String name) { this.name = name; } @Override public void displayComponent() { System.out.println("print "+name); }}
/** * 登录窗口 * * @Author peanutnowing * @Date 2020/6/23 */public class LoginWindow { public static void main(String[] args) { SimpleComponent pictureLogo = new SimpleComponent("Picture(LOGO图片)"); SimpleComponent loginButton = new SimpleComponent("Button(登录)"); SimpleComponent registerButton = new SimpleComponent("Button(注册)"); SimpleComponent labelName = new SimpleComponent("Label(用户名)"); SimpleComponent textBoxName = new SimpleComponent("TextBox(文本框)"); SimpleComponent labelPass = new SimpleComponent("Label(密码)"); SimpleComponent passwordBox = new SimpleComponent("PasswordBox(密码框)"); SimpleComponent checkBox = new SimpleComponent("CheckBox(复选框)"); SimpleComponent textBox = new SimpleComponent("TextBox(记住用户名)"); SimpleComponent linkLable = new SimpleComponent("LinkLabel(忘记密码)"); List<Component> componentList = new ArrayList<Component>(); componentList.add(labelName); componentList.add(textBoxName); componentList.add(labelPass); componentList.add(passwordBox); componentList.add(checkBox); componentList.add(textBox); componentList.add(linkLable); Container loginFrame = new Container("FRAME1",componentList); List<Component> components = new ArrayList<Component>(); components.add(pictureLogo); components.add(loginButton); components.add(registerButton); components.add(loginFrame); Container winForm = new Container("WINDOW窗口",components); winForm.displayComponent(); }}
划线
评论
复制
发布于: 2020 年 06 月 24 日阅读数: 72
版权声明: 本文为 InfoQ 作者【花生无翼】的原创文章。
原文链接:【http://xie.infoq.cn/article/98c04faa79813613689930032】。文章转载请联系作者。
花生无翼
关注
日拱一卒,想到做到 2017.10.29 加入
还未添加个人简介
评论