架构师训练营 - Task Week 3

用户头像
brave heart
关注
发布于: 2020 年 06 月 25 日
架构师训练营 - Task Week 3



一、作业题

请在草稿纸上手写一个单例模式的实现代码。 

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



二、实现步骤

1、Common

使用组合设计模式,首先看下需求,所有组件一定是有组件名的,就把其抽取出来,单独放到Common,代码如下所示:

public abstract class Common {
private String name = "";
public Common(String _name) {
this.name = _name;
}
public String getName() {
return name;
}
}



2、Parent

在树形结构数据中,因为树根和树枝其实都是一个父节点,所以就直接用同一套逻辑了,代码如下所示:

public class parent extends Common {
ArrayList<Common> childrenList = new ArrayList<>();
public parent(String _name) {
super(_name);
}
public void addChild(Common common) {
childrenList.add(common);
}
public void removeChild(Common common) {
childrenList.remove(common);
}
public ArrayList<Common> getChildrenList() {
return childrenList;
}
}

3、Child

树叶也就是子节点,代码如下所示:

public class child extends Common {
public child(String _name) {
super(_name);
}
}



4、Login

最后,就是实现打印树形结构数据了,代码如下所示:

public class Login {
public static void main(String[] args) {
parent root = new parent("WinForm");
child picture = new child("Picture");
child buttonLogin = new child("Button(登录)");
child buttonRegister = new child("Button(注册)");
parent frame = new parent("Frame");
root.addChild(picture);
root.addChild(buttonLogin);
root.addChild(buttonRegister);
root.addChild(frame);
child username = new child("username");
child input_username = new child("input username");
child password = new child("password");
child input_password = new child("input password");
child checkBox = new child("checkBox");
child remember_password = new child("remember password");
child forget_password = new child("forget password");
frame.addChild(username);
frame.addChild(input_username);
frame.addChild(password);
frame.addChild(input_password);
frame.addChild(checkBox);
frame.addChild(remember_password);
frame.addChild(forget_password);
display(root);
}
public static void display(parent branch) {
System.out.println("println "+ branch.getName());
for (Common c : branch.getChildrenList()) {
if (c instanceof child) {
System.out.println("println "+ c.getName());
} else {
display((parent) c);
}
}
}
}



打印输出,如下图所示:





发布于: 2020 年 06 月 25 日 阅读数: 34
用户头像

brave heart

关注

唯一不变的是变化本身。 2018.04.17 加入

🗡 她只唱只想这首止战之殇。

评论

发布
暂无评论
架构师训练营 - Task Week 3