1
第 3 周作业 - 设计模式
发布于: 2020 年 11 月 08 日
一、作业说明
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
二、作业实现
1.单例模式
package online.chenkai.demon.gof.singleton;
/**
* 单例模式
*
* @author chenkai 2020-11-08 19:51:00
* @version 1.0.0
*/
public class SingleTonTest {
/**
* 实例
*/
private static final SingleTonTest INSTANCE = new SingleTonTest();
/**
* 私有化构造器
*/
private SingleTonTest() {
}
/**
* 获取实例
*
* @return SingleTonTest 实例
*/
public static SingleTonTest getInstance() {
return INSTANCE;
}
}
复制代码
2.组合模式
package online.chenkai.demon.gof.composite;
import java.util.ArrayList;
import java.util.List;
/**
* 窗口基类
*
* @author chenkai 2020-11-08 20:05:00
* @version 1.0.0
*/
public class WindowFrom {
/**
* 构造器
*/
public WindowFrom() {
}
/**
* 构造器
*
* @param name 名称
*/
public WindowFrom(String name) {
this.name = name;
}
/**
* 列表
*/
private final List<WindowFrom> windowList = new ArrayList<>();
public String name;
public String getName() {
return name;
}
/**
* 添加窗口
*
* @param windowFrom 窗口
*
* @return windowFrom 窗口
*/
public WindowFrom add(WindowFrom windowFrom) {
windowList.add(windowFrom);
return windowFrom;
}
/**
* 绘制
*/
public void draw() {
System.out.println(getName());
for (WindowFrom windowFrom : windowList) {
windowFrom.draw();
}
}
}
package online.chenkai.demon.gof.composite;
import java.util.ArrayList;
/**
* 层
*
* @author chenkai 2020-11-08 20:05:00
* @version 1.0.0
*/
public class Frame extends WindowFrom {
/**
* 构造器
*/
public Frame() {
}
/**
* 构造器
*
* @param name 名称
*/
public Frame(String name) {
this.name = name;
}
private ArrayList<WindowFrom> frameList = new ArrayList<>();
/**
* 名称
*/
private String name;
@Override
public String getName() {
return name;
}
@Override
public WindowFrom add(WindowFrom windowFrom) {
frameList.add(windowFrom);
return this;
}
/**
* 打印
*/
@Override
public void draw() {
System.out.println(getName());
for (WindowFrom windowFrom : frameList) {
windowFrom.draw();
}
}
}
package online.chenkai.demon.gof.composite;
/**
* 按钮
*
* @author chenkai 2020-11-08 20:05:00
* @version 1.0.0
*/
public class Button extends WindowFrom {
/**
* 名称
*/
private String name;
@Override
public void draw() {
System.out.println(name);
}
/**
* 构造器
*
* @param name 名称
*/
public Button(String name) {
this.name = name;
}
}
package online.chenkai.demon.gof.composite;
/**
* TextBox
*
* @author chenkai 2020-11-08 20:05:00
* @version 1.0.0
*/
public class TextBox extends Frame {
/**
* 名称
*/
private String name;
@Override
public void draw() {
System.out.println(name);
}
/**
* 构造器
*
* @param name 名称
*/
public TextBox(String name) {
this.name = name;
}
}
复制代码
执行结果:
划线
评论
复制
发布于: 2020 年 11 月 08 日阅读数: 38
Rocky·Chen
关注
还未添加个人签名 2018.03.03 加入
还未添加个人简介
评论 (1 条评论)