写点什么

第 3 周作业 - 设计模式

用户头像
Rocky·Chen
关注
发布于: 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; }
}


复制代码

执行结果:


用户头像

Rocky·Chen

关注

还未添加个人签名 2018.03.03 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
单例要手写哦~
2020 年 11 月 15 日 19:30
回复
没有更多了
第3周作业-设计模式