写点什么

第三周作业

用户头像
考尔菲德
关注
发布于: 2020 年 06 月 24 日

作业一

三种常用的单例模式

饿汉模式、懒汉模式(线程不安全)以及双重检查模式





作业二

根据作业内容,先进行类图的设计,如下:

在进行具体代码的实现

首先Element的定义如下:

/**
* 元素类,可以表示单一元素或者一个容器
*/
public abstract class Element {
private String type;
private String text;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public abstract void print();
}

Leaf类的定义如下:

/**
* 具体实现类,表示单一元素
*/
public class Leaf extends Element {
public Leaf(String type, String text) {
super(type, text);
}
@Override
public void print() {
System.out.println("print " + getType() + "(" + getText() + ")");
}
}

Suit类的定义如下:

/**
* 组件类,包含多个元素的组件
*/
public class Suit extends Element {
private List<Element> elements = new ArrayList<>();
public Suit(String type, String text) {
super(type, text);
}
public void add(Element element) {
elements.add(element);
}
@Override
public void print() {
System.out.println("print " + getType() + "(" + getText() + ")");
if (!elements.isEmpty()) {
elements.forEach(x -> x.print());
}
}
}



最后客户端调用代码如下:

public class Client {
public static void main(String[] args) {
Suit winForm = new Suit("WindowForm", "WINDOW窗口");
winForm.add(new Leaf("Picture", "LOGO图片"));
winForm.add(new Leaf("Button", "登录"));
winForm.add(new Leaf("Button", "注册"));
Suit frame = new Suit("Frame", "FRAME1");
winForm.add(frame);
frame.add(new Leaf("Label", "用户名"));
frame.add(new Leaf("TextBox", "文本框"));
frame.add(new Leaf("Label", "密码"));
frame.add(new Leaf("PasswordBox", "密码框"));
frame.add(new Leaf("CheckBox", "复选框"));
frame.add(new Leaf("TextBox", "记住用户名"));
frame.add(new Leaf("LinkLable", "忘记密码"));
winForm.print();
}
}



用户头像

考尔菲德

关注

还未添加个人签名 2018.04.19 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
考虑组件容器的设计
2020 年 06 月 26 日 09:54
回复
没有更多了
第三周作业