架构师第三周作业

用户头像
G小调
关注
发布于: 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 加入

还未添加个人简介

评论

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