week3: 组合设计模式和单例
发布于: 2020 年 06 月 21 日
组合模式:
LeafWidget(叶子组件)和CompositeWidget(组合组件)都实现了interface Widget。
LeafWidget
public class LeafWidget implements Widget { private String name = ""; public LeafWidget(String name) { this.name = name; } @Override public void print() { System.out.println(this.getClass().getSimpleName() + "(" + name + ")"); }}
CompositeWidget
import java.util.Vector;public class CompositeWidget implements Widget { private String name = ""; public CompositeWidget(String name) { this.name = name; } private Vector<Widget> itsWidget = new Vector(); public void add(Widget widget) { itsWidget.add(widget); } @Override public void print() { System.out.println(this.getClass().getSimpleName()+ "(" + name + ")"); for (int i = 0; i < itsWidget.size(); i++) { itsWidget.get(i).print(); } }}
interface Widget
public interface Widget { void print();}
WinForm
public class WinForm extends CompositeWidget{ public WinForm() { super("WINDOW窗口"); this.add(new Picture("LOGO图片")); this.add(new Button("登录")); this.add(new Button("注册")); Frame frame = new Frame("Frame1"); frame.add(new Label("用户名")); frame.add(new TextBox("文本框")); frame.add(new Label("密码")); frame.add(new PasswordBox("密码框")); frame.add(new CheckBox("复选框")); frame.add(new TextBox("记住用户名")); frame.add(new LinkLabel("忘记密码")); this.add(frame); } public static void main(String[] args) { WinForm winForm = new WinForm(); winForm.print(); }}
Frame
public class Frame extends CompositeWidget{ public Frame(String name) { super(name); }}
Button
public class Button extends LeafWidget{ public Button(String name) { super(name); }}
其他类略。
输出结果:
WinForm(WINDOW窗口)Picture(LOGO图片)Button(登录)Button(注册)Frame(Frame1)Label(用户名)TextBox(文本框)Label(密码)PasswordBox(密码框)CheckBox(复选框)TextBox(记住用户名)LinkLabel(忘记密码)
单例:
划线
评论
复制
发布于: 2020 年 06 月 21 日阅读数: 56
版权声明: 本文为 InfoQ 作者【Geek_36d3e5】的原创文章。
原文链接:【http://xie.infoq.cn/article/8154fde8b1619b3fbc3ad71fc】。未经作者许可,禁止转载。
Geek_36d3e5
关注
还未添加个人签名 2020.05.30 加入
还未添加个人简介
评论