写点什么

架构师训练营第三周作业

用户头像
W_T
关注
发布于: 2020 年 06 月 22 日

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





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



作业:

  • 类图设计



  • 关键类的代码

Component类



public abstract class Component {

private String label;

public Component(String label) {
this.label = label;
}

public abstract void draw();
public abstract String getType();

public void printInfo() {
System.out.println("print " + getType() + "(" + label + ")");
}

}



Composite类



public class Composite extends Component {


private List<Component> components = new ArrayList<Component>();

public Composite(String label) {
super(label);
}

@Override
public void draw() {
printInfo();
for (Component c : components) {
c.draw();
}
}

@Override
public String getType() {
return "Composite";
}

public void addComponent(Component component) {
components.add(component);
}

}



Button类

public class Button extends Component {

public Button(String label) {
super(label);
}

@Override
public void draw() {
// do something
printInfo();
}

@Override
public String getType() {
return "Button";
}
}



WinForm类

public class WinForm extends Composite {

public WinForm(String label) {
super(label);
}

@Override
public String getType() {
return "WinForm";
}
}



测试类

public class ComponentTest {

public static void main(String[] args) {
// 初始化Root窗口
Composite root = new WinForm("WINDOW 窗口");

// 添加图片和按钮组件
root.addComponent(new Picture("LOGO图片"));
root.addComponent(new Button("登录"));
root.addComponent(new Button("注册"));


// 添加Frame组件
Composite frame = new Frame("Frame1");
frame.addComponent(new Lable("用户名"));
frame.addComponent(new TextBox("文本框"));
frame.addComponent(new Lable("密码"));
frame.addComponent(new PasswordBox("密码框"));
frame.addComponent(new CheckBox("复选框"));
frame.addComponent(new TextBox("记住用户名"));
frame.addComponent(new LinkLable("忘记密码"));
root.addComponent(frame);

// 画图
root.draw();
}

}



  • 打印结果



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

W_T

关注

还未添加个人签名 2018.01.09 加入

还未添加个人简介

评论

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