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 条评论)