写点什么

week3: 组合设计模式和单例

用户头像
Geek_36d3e5
关注
发布于: 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
用户头像

Geek_36d3e5

关注

还未添加个人签名 2020.05.30 加入

还未添加个人简介

评论

发布
暂无评论
week3:组合设计模式和单例