架构师训练营 -week03- 作业
发布于: 2020 年 10 月 03 日
作业一:手写单例模式
手写了两种:饿汉式和静态方法类的方式,应该是日常工作中比较常见的两种写法。
其他还有:懒汉式,双重检测,还有枚举的方式。
作业二:组合模式实践
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图
实现方法:
public interface Component { void print();}
public abstract class BaseComponent implements Component { private String name; private String function; private List<Component> componentList; public BaseComponent(String name, String function) { this.name = name; this.function = function; componentList = new ArrayList<>(); } public void addComponent(Component component) { componentList.add(component); } public void removeComponent(Component component) { if (componentList.contains(component)) { componentList.remove(component); } } @Override public void print() { System.out.println(String.format("print %s(%s)", this.function, this.name)); for (Component component : componentList) { component.print(); } }}
public class WindowForm extends BaseComponent { public WindowForm(String name, String function) { super(name, function); }}public class Button extends BaseComponent { public Button(String name, String function) { super(name, function); }}public class Frame extends BaseComponent { public Frame(String name, String function) { super(name, function); }}public class CheckBox extends BaseComponent { public CheckBox(String name, String function) { super(name, function); }}//。。。其他的组件 textBox,label等
public static void main(String[] args) { BaseComponent windowForm = new WindowForm("WINDOW窗口", "WinForm"); windowForm.addComponent(new Picture("LOGO图片", "Picture")); windowForm.addComponent(new Button("登录", "Button")); windowForm.addComponent(new Button("注册", "Button")); BaseComponent frame = new Frame("FRAME1", "Frame"); frame.addComponent(new Label("用户名", "Label")); frame.addComponent(new TextBox("文本框", "TextBox")); frame.addComponent(new Label("密码", "Label")); frame.addComponent(new PasswordBox("密码框", "TextBox")); frame.addComponent(new CheckBox("复选框", "CheckBox")); frame.addComponent(new TextBox("记住用户名", "TextBox")); frame.addComponent(new LinkLabel("忘记密码", "LinkLabel")); windowForm.addComponent(frameComp); windowForm.print(); }
输出结果:print WinForm(WINDOW窗口)print Picture(LOGO图片)print Button(登录)print Button(注册)print Frame(FRAME1)print Label(用户名)print TextBox(文本框)print Label(密码)print TextBox(密码框)print CheckBox(复选框)print TextBox(记住用户名)print LinkLabel(忘记密码)Process finished with exit code 0
划线
评论
复制
发布于: 2020 年 10 月 03 日阅读数: 38
大刘
关注
大道至简,知易行难 2017.12.27 加入
想成为合格架构师的架构师
评论