架构师训练营第三周作业
发布于: 2020 年 10 月 09 日
请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
写了四种:
懒汉模式
饿汉模式
双重校验锁
请用组合设计模式编写程序,打印输出图1的窗口,窗口组件的树形结构如图2所示,打印输出示例参考图3
各个组件的定义:
// 主入口类,main()public class WinForm extends ComponentList implements Component { public void print() { System.out.println("print WinForm(WINDOW窗口)"); super.print(); } public static void main(String[] args) { ComponentList winForm = new WinForm(); winForm.addComponent(new Picture()); winForm.addComponent(new Button("登录")); winForm.addComponent(new Button("注册")); ComponentList componentList = new Frame(); winForm.addComponent(componentList); componentList.addComponent(new Lable("用户名")); componentList.addComponent(new TextBox()); componentList.addComponent(new Lable("密码")); componentList.addComponent(new PasswordBox()); componentList.addComponent(new CheckBox()); componentList.addComponent(new Lable("记住用户名")); componentList.addComponent(new LinkLable()); winForm.print(); }}public class Picture implements Component { public void print() { System.out.println("print Pictrue(LOGO图片)"); }}public class Button implements Component { private String content; // 内容 public Button(String content) { this.content = content; } public void print() { if(content != null){ System.out.println("print Button("+content+")"); } }}public class Frame extends ComponentList implements Component { public void print() { System.out.println("print Frame(FRAME1)"); super.print(); }}public class Lable implements Component { private String content; // 内容 public Lable(String content) { this.content = content; } @Override public void print() { if(content != null){ System.out.println("print Lable("+content+")"); } }}//定义文本框public class TextBox implements Component { public void print() { System.out.println("print TextBox(文本框)"); }}public class PasswordBox implements Component { public void print() { System.out.println("print PasswordBox(密码框)"); }}public class CheckBox implements Component { public void print() { System.out.println("print CheckBox(复选框)"); }}//定义链接public class LinkLable implements Component { public void print() { System.out.println("print LinkLable(忘记密码)"); }}public abstract class ComponentList implements Component{ protected List<Component> components = new ArrayList<Component>(); public void addComponent(Component component) { components.add(component); } public void print(){ for(Component component : components){ component.print(); } }}
划线
评论
复制
发布于: 2020 年 10 月 09 日 阅读数: 12
版权声明: 本文为 InfoQ 作者【Wee权】的原创文章。
原文链接:【http://xie.infoq.cn/article/b044fd3673def62577054d84e】。未经作者许可,禁止转载。
Wee权
关注
还未添加个人签名 2018.02.07 加入
还未添加个人简介
评论