【架构师训练营】第 3 周作业

发布于: 2020 年 06 月 24 日

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

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

/**
*
* 组件
* @Author peanutnowing
* @Date 2020/6/23
*/
public interface Component {
/**
* 展示组件
*/
void displayComponent();
}

/**
* 容器
*
* @Author peanutnowing
* @Date 2020/6/23
*/
public class Container implements Component {
private String name;
private List<Component> componentList;
public Container(String name, List<Component> components){
this.componentList = new ArrayList<Component>();
this.name = name;
this.componentList.addAll(components);
}
public void addComponent(Component component) {
this.componentList.add(component);
}
@Override
public void displayComponent() {
System.out.println("print "+name);
this.componentList.forEach(part -> part.displayComponent());
}
}

/**
*
* 简单组件
* @Author peanutnowing
* @Date 2020/6/23
*/
public class SimpleComponent implements Component{
private String name;
public SimpleComponent(String name) {
this.name = name;
}
@Override
public void displayComponent() {
System.out.println("print "+name);
}
}

/**
* 登录窗口
*
* @Author peanutnowing
* @Date 2020/6/23
*/
public class LoginWindow {
public static void main(String[] args) {
SimpleComponent pictureLogo = new SimpleComponent("Picture(LOGO图片)");
SimpleComponent loginButton = new SimpleComponent("Button(登录)");
SimpleComponent registerButton = new SimpleComponent("Button(注册)");
SimpleComponent labelName = new SimpleComponent("Label(用户名)");
SimpleComponent textBoxName = new SimpleComponent("TextBox(文本框)");
SimpleComponent labelPass = new SimpleComponent("Label(密码)");
SimpleComponent passwordBox = new SimpleComponent("PasswordBox(密码框)");
SimpleComponent checkBox = new SimpleComponent("CheckBox(复选框)");
SimpleComponent textBox = new SimpleComponent("TextBox(记住用户名)");
SimpleComponent linkLable = new SimpleComponent("LinkLabel(忘记密码)");
List<Component> componentList = new ArrayList<Component>();
componentList.add(labelName);
componentList.add(textBoxName);
componentList.add(labelPass);
componentList.add(passwordBox);
componentList.add(checkBox);
componentList.add(textBox);
componentList.add(linkLable);
Container loginFrame = new Container("FRAME1",componentList);
List<Component> components = new ArrayList<Component>();
components.add(pictureLogo);
components.add(loginButton);
components.add(registerButton);
components.add(loginFrame);
Container winForm = new Container("WINDOW窗口",components);
winForm.displayComponent();
}
}

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

花生无翼

关注

日拱一卒,想到做到 2017.10.29 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营】第 3 周作业