1
架构师训练营 -week3 命题作业
发布于: 2020 年 06 月 21 日
本周作业是利用组合模式打印登陆窗口程序以及手写单例模式。
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
直接上代码:
package jiketime_homework.week03;/** * @author jeffSmile * @date 2020-06-21 上午 11:40 * @desc */public interface Component { void print();}
package jiketime_homework.week03;/** * @author jeffSmile * @date 2020-06-21 上午 11:44 * @desc 元素类组件 */public class Element implements Component{ private String name; public Element(String name){ this.name=name; } @Override public void print() { System.out.println("loading :" + name); }}
package jiketime_homework.week03;import java.util.ArrayList;import java.util.List;/** * @author jeffSmile * @date 2020-06-21 上午 11:48 * @desc 容器类组件 */public class Container implements Component{ List<Component> components = new ArrayList<>(); private String name; public Container(String name){ this.name = name; } public void addComponent(Component component){ components.add(component); } @Override public void print() { System.out.println("loading :" + name); for (Component component: components) { component.print(); } }}
打印程序:
package jiketime_homework.week03;/** * @author jeffSmile * @date 2020-06-21 上午 11:58 * @desc 打印窗口程序 */public class PrintProgram { public static void main(String[] args) { Container winForm = new Container("winForm"); Component picture = new Element("LOGO PICTURE"); Component loginBtn = new Element("LOGIN BUTTON"); Component regBtn = new Element("REGISTER BUTTON"); Container frame = new Container("FRAME"); winForm.addComponent(picture); winForm.addComponent(loginBtn); winForm.addComponent(regBtn); winForm.addComponent(frame); Component userLabel = new Element("USERNAME LABEL"); Component passLabel = new Element("PASSWORD LABEL"); Component userCheckBox = new Element("USERNAME checkBox"); Component passCheckBox = new Element("PASSWORD checkBox"); Component rememberCheckBox = new Element("REMEMBER checkBox"); Component rememberUserLabel = new Element("REMEMBER USERNAME LABEL"); Component forgetPWDLabel = new Element("FORGET PASSWORD LABEL"); frame.addComponent(userLabel); frame.addComponent(passLabel); frame.addComponent(userCheckBox); frame.addComponent(passCheckBox); frame.addComponent(rememberCheckBox); frame.addComponent(rememberUserLabel); frame.addComponent(forgetPWDLabel); winForm.print(); }}
运行程序打印结果:
loading :winFormloading :LOGO PICTUREloading :LOGIN BUTTONloading :REGISTER BUTTONloading :FRAMEloading :USERNAME LABELloading :PASSWORD LABELloading :USERNAME checkBoxloading :PASSWORD checkBoxloading :REMEMBER checkBoxloading :REMEMBER USERNAME LABELloading :FORGET PASSWORD LABEL
划线
评论
复制
发布于: 2020 年 06 月 21 日阅读数: 62
版权声明: 本文为 InfoQ 作者【J.Spring】的原创文章。
原文链接:【http://xie.infoq.cn/article/91edd7303a49d674911386e74】。文章转载请联系作者。
J.Spring
关注
努力支撑经历,经历支撑能力! 2018.12.03 加入
追不上BAT的人... 分享,聚焦
评论