第三周作业
发布于: 2020 年 06 月 24 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
使用 DCL 实现的单例。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
代码如下
public abstract class Component {
protected String name;
protected String type;
public Component(String name,String type){
this.name=name;
this.type=type;
}
public abstract void print();
}
复制代码
public class ContainerComponent extends Component{
private List<Component> subNodes=new ArrayList<>();
public ContainerComponent(String name,String type) {
super(name,type);
}
@Override
public void print() {
System.out.println("print "+type+"("+name+")");
for(Component component:subNodes){
component.print();
}
}
public void addSubNode(Component component){
subNodes.add(component);
}
}
复制代码
public class BaseComponent extends Component{
public BaseComponent(String name,String type) {
super(name,type);
}
@Override
public void print() {
System.out.println("print "+type+"("+name+")");
}
}
复制代码
public class Test {
public static void main(String[] args) {
Container w=new Container("WINDOWS窗口","WinForm");
BaseComponent p=new BaseComponent("LOGO图片","Picture");
BaseComponent b1=new BaseComponent("登录","Button");
BaseComponent b2=new BaseComponent("注册","Button");
w.addSubNode(p);
w.addSubNode(b1);
w.addSubNode(b2);
Container f=new Container("FRAME1","Frame");
w.addSubNode(f);
BaseComponent l1=new BaseComponent("用户名","Label");
BaseComponent t1=new BaseComponent("文本框","TextBox");
BaseComponent l2=new BaseComponent("密码","Label");
BaseComponent p2=new BaseComponent("密码框","passwordBox");
BaseComponent c=new BaseComponent("复选框","CheckBox");
BaseComponent t2=new BaseComponent("记住用户名","TextBox");
BaseComponent l3=new BaseComponent("忘记密码","LinkLabel");
f.addSubNode(l1);
f.addSubNode(t1);
f.addSubNode(l2);
f.addSubNode(p2);
f.addSubNode(c);
f.addSubNode(t2);
f.addSubNode(l3);
w.print();
}
}
复制代码
代码更简洁明了。
划线
评论
复制
发布于: 2020 年 06 月 24 日阅读数: 57
版权声明: 本文为 InfoQ 作者【南宫煌】的原创文章。
原文链接:【http://xie.infoq.cn/article/185bdb2385874384404a8c658】。未经作者许可,禁止转载。
南宫煌
关注
还未添加个人签名 2019.10.08 加入
还未添加个人简介
评论