1
架构师训练营第三章作业
发布于: 2020 年 06 月 23 日
作业一:手写单例模式
说明:最近一段时间在北京出差,住的小区封闭管理,暂时出不去,没有纸笔,所以用txt格式代替。
恶汉模式
instance 静态实例就已经创建并初始化好了,所以,instance 实例的创建过程是线程安全的。
懒汉式
懒汉式相对于饿汉式的优势是支持延迟加载,但是并发操作需要加锁,导致并发度很低。
双重检测
既支持延迟加载、又支持高并发的单例实现方式。
作业二:用组合设计模式编写程序
类图:
组件接口定义
public interface Component { void print();}
基础组件定义
public abstract class AbstractComponent implements Component{ private String name; public AbstractComponent(String name){ this.name = name; } @Override public void print(){ System.out.println(name); }}
组合组件定义
public class ComponentGroup extends AbstractComponent { private List<Component> components = new ArrayList<>(); public ComponentGroup(String name) { this(name, null); } public ComponentGroup(String name, Collection<Component> comps) { super(name); if (comps != null) { components.addAll(comps); } } public void addComponent(Component comp) { if (comp != null) { components.add(comp); } } @Override public final void print() { super.print(); components.stream().forEach(Component::print); }}
Button
public class Button extends AbstractComponent { public Button(String name) { super(name); }}
CheckBox
public class CheckBox extends AbstractComponent { public CheckBox(String name) { super(name); }}
Lable
public class Lable extends AbstractComponent { public Lable(String name) { super(name); }}
LinkLable
public class LinkLable extends AbstractComponent { public LinkLable(String name) { super(name); }}
PasswordBox
public class PasswordBox extends AbstractComponent { public PasswordBox(String name) { super(name); }}
Picture
public class Picture extends AbstractComponent{ public Picture(String name) { super(name); }}
TextBox
public class TextBox extends AbstractComponent { public TextBox(String name) { super(name); }}
Frame
public class Frame extends ComponentGroup { public Frame(String name) { super(name); }}
WinForm
public class WinForm extends ComponentGroup { public WinForm(String name) { super(name); }}
Test
public static void main(String[] args) { WinForm window = new WinForm("WINDOW窗口"); window.addComponent(new Picture("LOGO图片")); window.addComponent(new Button("登录")); window.addComponent(new Button("注册")); Frame frame = new Frame("FRAME1"); window.addComponent(frame); frame.addComponent(new Lable("用户名")); frame.addComponent(new TextBox("文本框")); frame.addComponent(new Lable("密码")); frame.addComponent(new PasswordBox("密码框")); frame.addComponent(new CheckBox("复选框")); frame.addComponent(new Lable("记住用户名")); frame.addComponent(new LinkLable("忘记密码")); window.print(); }
执行结果
划线
评论
复制
发布于: 2020 年 06 月 23 日阅读数: 60
版权声明: 本文为 InfoQ 作者【叮叮董董】的原创文章。
原文链接:【http://xie.infoq.cn/article/c71324bfccd367a9c42c4864a】。文章转载请联系作者。
叮叮董董
关注
还未添加个人签名 2020.04.08 加入
还未添加个人简介
评论 (2 条评论)