【第三周】命题作业——单例及组合模式
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业
答:
饿汉模式
关键点:构造器私有,私有实例变量静态且final
懒汉模式
关键点:构造器私有,私有实例变量静态且volatile,防止指令重排,获取实例方法同步且双重检查。
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3
答:
以下展示的是代码实现和说明。
Render接口,组合模式需要继承的接口
Widget类,Render接口的一个简单实现
ContainerWidget类,组合模式的体现,继承了Widget(因为容器自身也有渲染需要,所有直接继承了Widget),覆盖render实现。
WinForm类,一个容器部件,继承ContainerWidget
Button类,一个简单部件,继承Widget
App类及所有部件类参见下图
执行App输出
说明:这里体现组合模式的是ContainerWidget类,内部包含了Widget列表,且与Widget实现同一接口,render方法执行时对内部Widget列表进行逐个渲染。
(这里Widget,ContainerWidget使用抽象类,是为了减少代码编写,真实场景要具体分析)
版权声明: 本文为 InfoQ 作者【三尾鱼】的原创文章。
原文链接:【http://xie.infoq.cn/article/5bd802772b37d6949913ec689】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论