第三周

作者: yz08150 | 来源:发表于2020-06-24 12:02 被阅读0次

手写单例模式

image.png

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

image.png
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();
    }
}

相关文章

网友评论

      本文标题:第三周

      本文链接:https://www.haomeiwen.com/subject/nimaxktx.html