单例及组合模式实践

发布于: 14 分钟前

单例模式

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

答:

组合模式

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

1、定义接口

public interface Component {
void print();
}

2、定义组合基类

import java.util.ArrayList;
import java.util.List;
public class WinForm implements Component{
public WinForm(String name){
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
List<Component> components = new ArrayList<Component>();
public void addComponent(Component component){
components.add(component);
}
public void print() {
System.out.println("print WinForm("+this.getName()+")");
for (Component c: components) {
c.print();
}
}
}

3、定义各个派生类

public class Frame extends WinForm {
public Frame(String name) {
super(name);
}
@Override
public void print() {
System.out.println("print Frame("+this.getName()+")");
for (Component c: components) {
c.print();
}
}
}
//其他类与Button差不多,只有print方法不一样
public class Button extends WinForm {
public Button(String name) {
super(name);
}
@Override
public void print() {
System.out.println("print Button("+this.getName()+")");
}
}

4、组装对象生成main函数

public class demo {
public static void main(String[] args) {
WinForm winForm = new WinForm("WINDOWS窗口");
Picture picture = new Picture("LOGO图片");
Button buttonLogin = new Button("登陆");
Button buttonRegister = new Button("注册");
Frame frame = new Frame("FRAME1");
Label labelUser = new Label("用户名");
TextBox textBoxUser = new TextBox("用户名文本框");
Label labelPswd = new Label("密码");
PasswordBox passwordBox = new PasswordBox("密码框");
CheckBox checkBox = new CheckBox("复选框");
TextBox textBoxRemeber = new TextBox("记住用户名");
LinkLabel linkLabelForget = new LinkLabel("忘记密码");
frame.addComponent(labelUser);
frame.addComponent(textBoxUser);
frame.addComponent(labelPswd);
frame.addComponent(passwordBox);
frame.addComponent(checkBox);
frame.addComponent(textBoxRemeber);
frame.addComponent(linkLabelForget);
winForm.addComponent(picture);
winForm.addComponent(buttonLogin);
winForm.addComponent(buttonRegister);
winForm.addComponent(frame);
winForm.print();
}
}

5、运行结果

发布于: 14 分钟前 阅读数: 3
用户头像

WulalaOlala

关注

还未添加个人签名 2019.05.14 加入

还未添加个人简介

评论

发布
暂无评论
单例及组合模式实践