架构师第三周作业
发布于: 2020 年 06 月 24 日
作业一:
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
Component抽象组件:为组合中所有对象提供一个接口,不管是叶子对象还是组合对象。
/** * 抽象组件 * @author * @date 2020/06/24 */public abstract class Component { protected String name; public Component(String name){ this.name = name; } public abstract void print(); public void add(Component component){ throw new UnsupportedOperationException(); }}
Composite组合节点对象:实现了Component的所有操作,并且持有子节点对象。
** * @author 柯柏 * @date 2020/06/24 */public class Composite extends Component { private List<Component> components = new ArrayList<>(); public Composite(String name) { super(name); } @Override public void print() { System.out.println(name); for (Component component:components){ component.print(); } } @Override public void add(Component component){ components.add(component); }}
Leaf叶节点对象:叶节点对象没有任何子节点,实现了Component中的某些操作。
/** * @author * @date 2020/06/24 */public class Leaf extends Component { public Leaf(String name) { super(name); } @Override public void print() { System.out.println(name); }}
测试类
ublic class Test { public static void main(String[] args) { //WinForm(WINDOW窗口 Component winForm = new Composite("WinForm(WINDOW窗口)"); //Picture(LOGO图片) Component picture = new Leaf("Picture(LOGO图片)"); //Button(登录) Component login = new Leaf("Button(登录)"); //Button(注册)Singleton Component register = new Leaf("Button(注册)"); winForm.add(picture); winForm.add(login); winForm.add(register); //Frame(FRAME1) Component frame = new Composite("Frame(FRAME1)"); //Lable(用户名) Component userName = new Leaf("Lable(用户名)"); //TextBox(文本框) Component userTextBox = new Leaf("TextBox(文本框)"); //Lable(密码) Component password = new Leaf("Lable(密码)"); //PasswordBox(密码框) Component passWordBox = new Leaf("PasswordBox(密码框)"); //CheckBox(复选框) Component checkBox = new Leaf("CheckBox(复选框)"); //TEXTBOX(记住用户名) Component remember = new Leaf("TEXTBOX(记住用户名)"); //LinkLable(忘记密码) Component linkLable = new Leaf("LinkLable(忘记密码)"); frame.add(userName); frame.add(userTextBox); frame.add(password); frame.add(passWordBox); frame.add(checkBox); frame.add(remember); frame.add(linkLable); winForm.add(frame); winForm.print(); }}
打印结果
划线
评论
复制
发布于: 2020 年 06 月 24 日 阅读数: 26
G小调
关注
还未添加个人签名 2018.05.30 加入
还未添加个人简介
评论