第三周作业
1 作业1
1.1 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2 作业2
2.1 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3
版权声明: 本文为 InfoQ 作者【数字】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5623907bfe25a140206504e3】。未经作者许可,禁止转载。
import java.util.ArrayList;import java.util.List;interface Widget { public void print();}class NamedWidget implements Widget{ String name; public NamedWidget(String name) { this.name = name; } public void print() { System.out.println("print "+ this.getClass().getName() + "("+ name + ")" ); }}class ContainerWidget extends NamedWidget { List<Widget> children; public ContainerWidget(String name) { super(name); children = new ArrayList<Widget>(); } public void addChildWidget(Widget widget) { children.add(widget); } public void print() { super.print(); for(Widget widget:children) { widget.print(); } }}class WinForm extends ContainerWidget { public WinForm(String name) { super(name); }}class Picture extends NamedWidget { public Picture(String name) { super(name); } }class Button extends NamedWidget { public Button(String name) { super(name); } }class Frame extends ContainerWidget { public Frame(String name) { super(name); } }class Label extends NamedWidget { public Label(String name) { super(name); } }class TextBox extends NamedWidget { public TextBox(String name) { super(name); } }class PasswordBox extends NamedWidget { public PasswordBox(String name) { super(name); } }class CheckBox extends NamedWidget { public CheckBox(String name) { super(name); } }class LinkLabel extends NamedWidget { public LinkLabel(String name) { super(name); } }public class CompositeSample { public static void main(String[] args) { // TODO Auto-generated method stub WinForm form = new WinForm("WINDOW窗口"); form.addChildWidget(new Picture("LOGO图片")); form.addChildWidget(new Button("登陆")); form.addChildWidget(new Button("注册")); Frame frame = new Frame("FRAME1"); frame.addChildWidget(new Label("用户名")); frame.addChildWidget(new TextBox("文本框")); frame.addChildWidget(new Label("密码")); frame.addChildWidget(new PasswordBox("密码框")); frame.addChildWidget(new CheckBox("复选框")); frame.addChildWidget(new TextBox("忘记用户名")); frame.addChildWidget(new TextBox("忘记密码")); form.addChildWidget(frame); form.print(); }}
版权声明: 本文为 InfoQ 作者【数字】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5623907bfe25a140206504e3】。未经作者许可,禁止转载。
还未添加个人签名 2018.10.06 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论