架构 0 期 -week3- 命题作业

用户头像
陈俊
关注
发布于: 2020 年 07 月 01 日

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



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





类图如下:



执行实例截图:



代码说明:

1.Component 接口,定义了 print() 方法

public interface Component {
/**
* 打印文案
*/
default void print() {}
}



2.AbstractTwigComponent 抽象类,可接受叶子节点

public abstract class AbstractTwigComponent implements Component {
protected List<Component> leafComponents = new ArrayList<>();
boolean add(Component component) {
leafComponents.add(component);
return true;
}
}



3.WinForm 与 Frame,继承自 AbstractTwigComponent

public class WinForm extends AbstractTwigComponent {
private String text;
public WinForm(String text) {
this.text = text;
}
@Override
public void print() {
System.out.println(String.format("print WinForm(%s)", text));
for (Component leafComponent : leafComponents) {
leafComponent.print();
}
}
}



4.Button 等,实现 Component

public class Button implements Component {
private String text;
public Button(String text) {
this.text = text;
}
@Override
public void print() {
System.out.println(String.format("print Button(%s)", text));
}
}



5.测试类

public class MainApplication {
public static void main(String[] args) {
WinForm winForm = new WinForm("WINDOW 窗口");
winForm.add(new Picture("LOGO 图片"));
winForm.add(new Button("登陆"));
winForm.add(new Button("注册"));
Frame frame1 = new Frame("FRAME1");
frame1.add(new Label("用户名"));
frame1.add(new TextBox("文本框"));
frame1.add(new Label("密码"));
frame1.add(new PasswordBox("密码框"));
frame1.add(new CheckBox("复选框"));
frame1.add(new TextBox("记住用户名"));
frame1.add(new Label("忘记密码"));
winForm.add(frame1);
winForm.print();
}
}



用户头像

陈俊

关注

还未添加个人签名 2017.09.10 加入

还未添加个人简介

评论

发布
暂无评论
架构 0 期 -week3- 命题作业