架构师训练营第三周作业
发布于: 2020 年 11 月 08 日
手写单例模式
请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
用组合设计模式编写程序
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
WinForm
package com.leo.homework;import java.util.LinkedList;import java.util.List;public class WinForm extends Component { private final List<Component> componentList = new LinkedList<>(); public WinForm(String name) { super(name); } @Override public void print() { System.out.println(this.getName()); for (Component component : componentList) { component.print(); } } @Override protected void add(Component component) { this.componentList.add(component); }}
Picture
package com.leo.homework;public class Picture extends Component { public Picture(String name) { super(name); }}
Button
package com.leo.homework;public class Button extends Component { public Button(String name) { super(name); }}
Frame
package com.leo.homework;import java.util.LinkedList;import java.util.List;public class Frame extends Component { private final List<Component> componentList = new LinkedList<>(); public Frame(String name) { super(name); } @Override public void print() { System.out.println(this.getName()); for (Component component : componentList) { component.print(); } } @Override protected void add(Component component) { this.componentList.add(component); }}
Label
package com.leo.homework;public class Label extends Component { public Label(String name) { super(name); }}
TestBox
package com.leo.homework;public class TextBox extends Component { public TextBox(String name) { super(name); }}
PasswordBox
package com.leo.homework;public class PasswordBox extends TextBox { public PasswordBox(String name) { super(name); }}
LinkLabel
package com.leo.homework;public class LinkLabel extends Label { public LinkLabel(String name) { super(name); }}
Test
package com.leo.homework;public class Test { public static void main(String[] args) { WinForm winForm = new WinForm("WINDOW窗口"); winForm.add(new Picture("LOGO图片")); winForm.add(new Button("登录")); winForm.add(new Button("注册")); Frame frame = new Frame("FRAME1"); winForm.add(frame); frame.add(new Label("用户名")); frame.add(new TextBox("文本框")); frame.add(new Label("密码")); frame.add(new PasswordBox("文本框")); frame.add(new Label("记住用户名")); frame.add(new LinkLabel("忘记密码")); winForm.print(); }}
划线
评论
复制
发布于: 2020 年 11 月 08 日阅读数: 28
版权声明: 本文为 InfoQ 作者【leo】的原创文章。
原文链接:【http://xie.infoq.cn/article/9f654da40b80d164e1c04c278】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
leo
关注
还未添加个人签名 2018.03.23 加入
还未添加个人简介
评论 (2 条评论)