架构师第三周作业

发布于: 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();
}
}

打印结果

用户头像

G小调

关注

还未添加个人签名 2018.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师第三周作业