第三周
2020-06-24 本文已影响0人
yz08150
手写单例模式

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

import java.util.Vector;
class Form {
Vector<Form> children = new Vector<>();
String desc;
Form(String desc) {
this.desc = desc;
}
public Form addChild(Form form) {
children.add(form);
return this;
}
public void print() {
System.out.println("print " + desc);
for (Form c : children) {
c.print();
}
}
}
class WinForm extends Form {
WinForm(String desc) {
super("WinForm(" + desc + ")");
}
}
class Picture extends Form {
Picture(String desc) {
super("Picture(" + desc + ")");
}
}
class Button extends Form {
Button(String desc) {
super("Button(" + desc + ")");
}
}
class Frame extends Form {
Frame(String desc) {
super("Frame(" + desc + ")");
}
}
class Lable extends Form {
Lable(String desc) {
super("Lable(" + desc + ")");
}
}
class TextBox extends Form {
TextBox(String desc) {
super("TextBox(" + desc + ")");
}
}
class PasswordBox extends Form {
PasswordBox(String desc) {
super("PasswordBox(" + desc + ")");
}
}
class CheckBox extends Form {
CheckBox(String desc) {
super("CheckBox(" + desc + ")");
}
}
class LinkLable extends Form {
LinkLable(String desc) {
super("LinkLable(" + desc + ")");
}
}
public class Main {
public static void main(String[] args) {
Form form = new WinForm("WINDOW窗口")
.addChild(new Picture("LOGO图片"))
.addChild(new Button("登录"))
.addChild(new Button("注册"))
.addChild(new Frame("FRAME1")
.addChild(new Lable("用户名"))
.addChild(new TextBox("文本框"))
.addChild(new Lable("密码"))
.addChild(new PasswordBox("密码框"))
.addChild(new CheckBox("复选框"))
.addChild(new TextBox("记住用户名"))
.addChild(new LinkLable("忘记密码"))
);
form.print();
}
}