2020-06-20- 第三周作业
1 作业一
请在草稿纸上手写一个单例模式的实现代码
2 作业二
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示。打印输出示例代码示例 1。
图 1 窗口图例
图 2 窗口组件树结构
复制代码
答:根据图 2 的窗口组件树结构可知,共有两种节点:一种是叶子节点,另一种是非叶子节点。其中非叶子节点可以有多个叶子节点,而叶子节点则无任何子节点。故而将这两类节点分别抽象为 Container 和 Component 抽象类,且同时实现 Graphic 接口。而这两个抽象类又派生出各自的子类,比如 Container 派生出 WinForm 和 Frame 子类,Component 派生出 Label、Button 等子类。具体类图如下所示。
以上使用了组合模式,其中 Graphic 为抽象组件接口,定义了 draw 方法用于绘制图像;Container 为组合对象,定义包含哪些子组件,并实现了 draw 方法;Component 为叶子对象,定义叶子对象,并实现 draw 方法,且不再包含其他的子节点对象。
程序代码如下所示:
复制代码
复制代码
复制代码
复制代码
复制代码
为便于查看,以上派生类中仅列出了 WinForm 和 Button 类。程序的执行入口是下面的 Main 类。经测试,输出与预期相符。
复制代码
评论