架构师训练营 W3 作业

用户头像
Kun
关注
发布于: 2020 年 06 月 24 日
  1. 手写单例



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



// abstract class
public abstract class Component {
protected String name;
public void print() {
System.out.println("print " + getClass().getName()
.substring(getClass().getName().lastIndexOf(".") + 1) + "(" + name + ")");
}
protected void add(Component component) {
throw new UnsupportedOperationException();
}
}
public class WindowForm extends Component {
private List<Component> childrenComponent = new ArrayList<>();
public WindowForm(String name) {
this.name = name;
}
@Override
public void print() {
super.print();
childrenComponent.forEach(c->c.print());
}
@Override
public void add(Component component) {
childrenComponent.add(component);
}
}
public class Button extends Component {
public Button(String name) {
this.name = name;
}
@Override
public void print() {
super.print();
}
}
//client
public class Client {
public static void main(String[] args) {
WindowForm window = new WindowForm("Window窗口");
Picture pic = new Picture("LOGO图片");
Button logon = new Button("登录");
Button register = new Button("注册");
Frame frame = new Frame("FRAME1");
Label userNameLabel = new Label("用户名");
Label pwdLabel = new Label("密码");
TextBox userNameTextBox = new TextBox("用户名文本框");
PasswordBox pwdBox = new PasswordBox("密码框");
CheckBox checkBox = new CheckBox("复选框");
Label rememberMe = new Label("记住用户名");
LinkLabel forgetPwd = new LinkLabel("忘记密码");
window.add(pic);
window.add(logon);
window.add(register);
window.add(frame);
frame.add(userNameLabel);
frame.add(userNameTextBox);
frame.add(pwdLabel);
frame.add(pwdBox);
frame.add(checkBox);
frame.add(rememberMe);
frame.add(forgetPwd);
window.print();
}
}



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

Kun

关注

Life is short. 2018.01.13 加入

Software Developer

评论

发布
暂无评论
架构师训练营 W3 作业