第三周作业一

发布于: 2020 年 06 月 24 日

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

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

/**
* 窗口组件接口
*/
public interface Form {
/**
* 绘制组件
*/
public void draw();
}
/**
* 窗口套件基类
*/
public abstract class FormSuit implements Form {
/**
* 组件名称
*/
protected final String name;
/**
* @param name 组件名称
*/
public FormSuit(String name) {
super();
this.name = name;
}
/**
* 窗口组件列表
*/
protected List<Form> forms = new ArrayList<>();
@Override
public void draw() {
System.out.println("print "+this.getClass().getSimpleName()+"("+name+")");
for (int i = 0; i < forms.size(); i++) {
forms.get(i).draw();
}
}
/**
* 添加子组件
* @param form 窗口组件
*/
public void addForm(Form form) {
forms.add(form);
}
}
/**
* 窗口部件基类
*/
public abstract class FormCase implements Form {
/**
* 形状名称
*/
protected final String name;
@Override
public void draw() {
System.out.println("print "+this.getClass().getSimpleName()+"("+name+")");
}
/**
* @param name
*/
public FormCase(String name) {
super();
this.name = name;
}
}
/**
* 窗口组件
*/
public class WinForm extends FormSuit {
/**
* @param name 窗口名称
*/
public WinForm(String name) {
super(name);
}
}
/**
* 图片组件
*/
public class Picture extends FormCase {
/**
* @param name 图片名称
*/
public Picture(String name) {
super(name);
}
}
/**
* 按钮组件
*/
public class Button extends FormCase {
/**
* @param name 按钮名称
*/
public Button(String name) {
super(name);
}
}
/**
* 表单组件
*/
public class Frame extends FormSuit {
/**
* @param name 表单名称
*/
public Frame(String name) {
super(name);
}
}
/**
* 标号组件
*/
public class Lable extends FormCase {
/**
* @param name 标号名称
*/
public Lable(String name) {
super(name);
}
}
/**
* 文本框组件
*/
public class TextBox extends FormCase {
/**
* @param name 文本框名称
*/
public TextBox(String name) {
super(name);
}
}
/**
* 密码框组件
*/
public class PasswordBox extends FormCase {
/**
* @param name 密码框名称
*/
public PasswordBox(String name) {
super(name);
}
}
/**
* 复选框组件
*/
public class CheckBox extends FormCase {
/**
* @param name 复选框名称
*/
public CheckBox(String name) {
super(name);
}
}
/**
* 链接标号组件
*/
public class LinkLable extends FormCase {
/**
* @param name 链接标号组件名称
*/
public LinkLable(String name) {
super(name);
}
}

运行结果:

print WinForm(WINDOW窗口)
print Picture(LOGO图片)
print Button(登录)
print Button(注册)
print Frame(FRAME1)
print Lable(用户名)
print TextBox(文本框)
print Lable(密码)
print PasswordBox(密码框)
print CheckBox(复选框)
print TextBox(记住用户名)
print LinkLable(忘记密码)

用户头像

安阳

关注

还未添加个人签名 2020.01.04 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业一