第 03 周 重构软件代码 命题作业
发布于: 2020 年 06 月 23 日

作业1. 请在草稿纸上手写一个单例模式的实现代码.

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


public abstract class Component {    private String name;    public Component(String name) {        this.name = name;    }    public String getName() {        return name;    }    public void add(Component component) {        throw new UnsupportedOperationException("不支持添加操作.");    }    public void remove(Component component) {        throw new UnsupportedOperationException("不支持删除操作.");    }    public abstract void print();}public class WindowForm extends Component {    List<Component> list = Lists.newArrayList();    public WindowForm(String name) {        super(name);    }    @Override    public void add(Component component) {        list.add(component);    }    @Override    public void remove(Component component) {        list.remove(component);    }    @Override    public void print() {        System.out.println("print WindowForm(" + this.getName() + ")");        for (Component component : list) {            component.print();        }    }}public class Frame extends Component {    List<Component> list = Lists.newArrayList();    public Frame(String name) {        super(name);    }    @Override    public void add(Component component) {        list.add(component);    }    @Override    public void remove(Component component) {        list.remove(component);    }    @Override    public void print() {        System.out.println("print Frame(" + this.getName() + ")");        for (Component component : list) {            component.print();        }    }}public class Picture extends Component {    public Picture(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print Picture(" + this.getName() + ")");    }}public abstract class Box extends Component {    public Box(String name) {        super(name);    }    public abstract void print();}public class CheckBox extends Box {    public CheckBox(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print CheckBox(" + this.getName() + ")");    }}public class PasswordBox extends Box {    public PasswordBox(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print PasswordBox(" + this.getName() + ")");    }}public class TextBox extends Box {    public TextBox(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print TextBox(" + this.getName() + ")");    }}public class Button extends Component {    public Button(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print Button(" + this.getName() + ")");    }}public class Lable extends Component {    public Lable(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print Lable(" + this.getName() + ")");    }}public class LinkLable extends Lable {    public LinkLable(String name) {        super(name);    }    @Override    public void print() {        System.out.println("print LinkLable(" + this.getName() + ")");    }}public class Main {    public static void main(String[] args) {        Component windowFormComponent = new WindowForm("WINDOW窗口");        windowFormComponent.add(new Picture("LOGO图片"));        windowFormComponent.add(new Button("登录"));        windowFormComponent.add(new Button("注册"));        Component frameComponent = new Frame("FRAME1");        frameComponent.add(new Lable("用户名"));        frameComponent.add(new TextBox("文本框"));        frameComponent.add(new Lable("密码"));        frameComponent.add(new PasswordBox("密码框"));        frameComponent.add(new CheckBox("复选框"));        frameComponent.add(new TextBox("记住用户名"));        frameComponent.add(new LinkLable("忘记密码"));        windowFormComponent.add(frameComponent);        windowFormComponent.print();    }}

划线
评论
复制
发布于: 2020 年 06 月 23 日阅读数: 153

Jaye
关注
还未添加个人签名 2018.01.23 加入
还未添加个人简介











 
    
评论