架构师训练营 week 3
发布于: 2020 年 06 月 24 日
1 手写单例模式
组合模式
/*** 基础接口*/public interface BaseComponent { void print();}/*** 容器模版类 继承专用*/@Datapublic class Container implements BaseComponent { List<BaseComponent> list = new ArrayList<>(); String name; public Container(String name) { this.name = name; } // 多态 public void addComponent(BaseComponent component) { list.add(component); } @Override public void print() { System.out.println(name); list.forEach(BaseComponent::print); }}/*** * 节点模版类 继承专用*/@Datapublic class Node implements BaseComponent { String name; public Node(String name){ this.name = name; } @Override public void print() { System.out.println(name); }}/*** 下面是具体的容器或者模版的实现*/public class WindowsForm extends Container { public WindowsForm(String name){ super(name); }}public class Frame extends Container { public Frame(String name) { super(name); }}public class Picture extends Node { public Picture(String name){ super(name); }}public class Lable extends Node { public Lable(String name) { super(name); }}public class Checkbox extends Node { public Checkbox(String name){ super(name); }}public class Passwordbox extends Node { public Passwordbox(String name){ super(name); }}public class Linklabe extends Node { public Linklabe(String name) { super(name); }}/*** 测试方法*/public class WinTest { public static void main(String[] args) { WindowsForm win = new WindowsForm("WINDOW 窗口"); win.addComponent(new Picture("logo 图片")); win.addComponent(new Button("登录")); win.addComponent(new Button("注册")); Frame frame = new Frame("frame1"); frame.addComponent(new Lable("用户名")); frame.addComponent(new Testbox("文本框")); frame.addComponent(new Lable("密码")); frame.addComponent(new Passwordbox("密码框")); frame.addComponent(new Checkbox("复选框")); frame.addComponent(new Testbox("记住用户名")); frame.addComponent(new Linklabe("忘记密码")); win.addComponent(frame); win.print(); }}运行结果: WINDOW 窗口 logo 图片 登录 注册 frame1 用户名 文本框 密码 密码框 复选框 记住用户名 忘记密码
心得
设计模式得实用场景很重要
充分利用多态
不通是设计模式得区分主要在于他解决什么问题,而不是具体得代码形式。
划线
评论
复制
发布于: 2020 年 06 月 24 日阅读数: 42
版权声明: 本文为 InfoQ 作者【iLeGeND】的原创文章。
原文链接:【http://xie.infoq.cn/article/16c34300239943185f7b6725b】。文章转载请联系作者。
iLeGeND
关注
我一直在你身边 从未走远 2018.02.20 加入
还未添加个人简介
评论