架构师训练营第 0 期第 3 周作业
发布于: 2020 年 06 月 24 日
手写单例模式
组合模式编写实例
public abstract class Component { private String description; public Component(String description) { this.description = description; } void print() { System.out.println(description); }}
Compent是一个抽象类,作为界面元素的基类,成员变量description则为界面控件元素的名字,print()方法则是一个公用打印控件元素的方法。
public class Leaf extends Component { public Leaf(String description) { super(description); }}
Leaf类是Component的子类,代表不能在这个控件上再添加其他控件。
public class Composite extends Component { public Composite(String description) { super(description); } private List<Component> componentList = new ArrayList<>(); public void add(Component component) { this.componentList.add(component); } public void remove(Component component) { this.componentList.remove(component); } public List<Component> getChildren() { return this.componentList; }}
Composite是一个组合类,成员变量componentList包含了所有组合元素,可以通过add(),romove()方法对成员变量componentList进行删除和增加元素。
public class Client { public static void main(String[] args) { Composite root = new Composite("WINDOW窗口"); Leaf picture = new Leaf("LOGO图片"); root.add(picture); Leaf button1 = new Leaf("登录"); root.add(button1); Leaf button2 = new Leaf("注册"); root.add(button2); Composite frame = new Composite("FRAME1"); root.add(frame); Leaf label = new Leaf("用户名"); frame.add(label); Leaf textBox = new Leaf("文本框"); frame.add(textBox); Leaf password = new Leaf("密码"); frame.add(password); Leaf passwordBox = new Leaf("密码框"); frame.add(passwordBox); Leaf checkbox = new Leaf("复选框"); frame.add(checkbox); Leaf textBox2 = new Leaf("复选框"); frame.add(textBox2); Leaf linkLabel = new Leaf("忘记密码"); frame.add(linkLabel); root.print(); show(root); } public static void show(Composite root) { for (Component component : root.getChildren()) { component.print(); if (component instanceof Composite) { show((Composite) component); } } }}
划线
评论
复制
发布于: 2020 年 06 月 24 日 阅读数: 23
茴字🈶四种写法💋
关注
还未添加个人签名 2018.03.20 加入
还未添加个人简介
评论