架构师训练营第三章作业

发布于: 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 日 阅读数: 12
用户头像

叮叮董董

关注

还未添加个人签名 2020.04.08 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三章作业