写点什么

架构师训练营 - 第三周命题作业

用户头像
牛牛
关注
发布于: 2020 年 06 月 21 日
架构师训练营 - 第三周命题作业

1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。

2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。





/**
* 抽象构件
**/
public abstract class Component {
public String getName() {
throw new UnsupportedOperationException("不支持获取名称操作");
}
public void add(Component component) {
throw new UnsupportedOperationException("不支持添加操作");
}
public void remove(Component component) {
throw new UnsupportedOperationException("不支持删除操作");
}
public void print() {
throw new UnsupportedOperationException("不支持打印操作");
}
}



import java.util.ArrayList;
import java.util.List;
/** 树枝
* @description:
* @author: liu.w
* @create: 2020-06-21 23:27
**/
public class Frame extends Component {
private String name;
private List<Component> componentList = new ArrayList<Component>();
public Frame(String name) {
this.name = name;
}
@Override
public String getName() {
return this.name;
}
@Override
public void add(Component component) {
this.componentList.add(component);
}
@Override
public void remove(Component component) {
this.componentList.remove(component);
}
@Override
public void print() {
System.out.println(this.getName());
for (Component component : this.componentList) {
component.print();
}
}
}



/** 树叶
* @description:
* @author: liu.w
* @create: 2020-06-21 23:23
**/
public class Leaf extends Component {
private String name;
public Leaf(String name) {
this.name = name;
}
@Override
public String getName() {
return this.name;
}
@Override
public void print() {
System.out.println(this.getName());
}
}



/**
* 测试类
**/
public class Test {
public static void main(String[] args) {
Frame parent = new Frame("WINDOWS窗口");
parent.add(new Leaf("LOGO图片"));
Frame frame = new Frame("FRAME1");
parent.add(frame);
frame.add(new Leaf("用户名"));
frame.add(new Leaf("文本框"));
frame.add(new Leaf("密码"));
frame.add(new Leaf("密码框"));
frame.add(new Leaf("复选框"));
frame.add(new Leaf("记住用户名"));
frame.add(new Leaf("忘记密码"));
parent.add(new Leaf("登录"));
parent.add(new Leaf("注册"));
parent.print();
}
}



用户头像

牛牛

关注

还未添加个人签名 2018.02.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第三周命题作业