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

发布于: 20 小时前

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

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

/**
* 组件接口
*/
public interface Component {
void print();
}
/**
* 容器元素
*/
public abstract class ContainerElement implements Component{
private String name;
private List<Component> componentList = new ArrayList<Component>();
public ContainerElement(String name) {
this.name = name;
}
public void addComponent(Component component) {
componentList.add(component);
}
@Override
public void print() {
System.out.println(this.name);
for(Component component : componentList){
component.print();
}
}
}
/**
* 组件元素
*/
public abstract class ComponentElement implements Component {
private String name;
public ComponentElement(String name){
this.name = name;
}
@Override
public void print() {
System.out.println(this.name);
}
}
/**
* WinForm
*/
public class WinForm extends ContainerElement{
public WinForm(String name) {
super(name);
}
}
/**
* Frame
*/
public class Frame extends WinForm{
public Frame(String name) {
super(name);
}
}
/**
* Button等等....
*/
public class Button extends ComponentElement{
public Button(String name) {
super(name);
}
}
/**
* 程序运行入口
*/
public class Main {
public static void main(String [] args) {
ContainerElement winForm = new WinForm("WinForm(WINDOW窗口)");
winForm.addComponent(new Picture("Picture(LOGO图片)"));
winForm.addComponent(new Button("Button(登录)"));
winForm.addComponent(new Button("Button(注册)"));
Frame frame1 = new Frame("Frame(FRAME1)");
frame1.addComponent(new Label("Lable(用户名)"));
frame1.addComponent(new TextBox("TextBox(文本框)"));
frame1.addComponent(new Label("Lable(密码)"));
frame1.addComponent(new PasswordBox("PasswordBox(密码框)"));
frame1.addComponent(new CheckBox("CheckBox(复选框)"));
frame1.addComponent(new TextBox("TextBox(记住用户名)"));
frame1.addComponent(new LinkLable("LinkLable(忘记密码)"));
winForm.addComponent(frame1);
winForm.print();
}
}

结果:

发布于: 20 小时前 阅读数: 5
用户头像

teslə

关注

还未添加个人签名 2018.08.09 加入

还未添加个人简介

评论

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