第三周 - 作业 - 设计模式,单例模式与组合模式
Sorry !上一周的作业,我后来越想越不对,然后就发现我用java语法写的有点错误,因为我没有用java写过代码,上次也没有从编译器尝试运行,直接在文稿写,但是后来又修改了错误的地方,用了抽象工厂方式去实现了Cache的单一职责。 但是最近作业一直用java语言,其实觉得java太贴合业务驱动开发,更容易抽象,实现面向对象了, 真的比其他语言方便许多。
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
单例模式比较适合于,全局共享一个对象的时候做使用。比如说全局共享数据,这时候需要使用到单例模式了。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
组合模式应该包含: 划分为安全式和透明式
组合模式比较适合用于有树结构的
1、 抽象构件: -- 根据题目 , , 抽象构件可以抽象一个show()
理解:
1、安全式, 不声明管理子类的方法,该工作交给,单独由树枝构件完成
2、透明式, 声明管理子类的方法,只要实现了这个接口,不管树叶构件还是树枝构件都需要实现方法,但是一般树叶构件是没有子类的,所以不需要实现管理子类的方法,如果这样暴露实现,会造成安全问题。
2、 树枝构件: -- 根据题目 , 可以定义为一个容器container ,包括IFrame, Window Form
理解: 有子类的,可以管理子类的
3、 树叶构件: -- 根据题目 , 可以为各种节点如 Button 、 Lable 、 Picture 、等等等, 我觉得他们只是类型不一样,所以我统称 , 方便简化代码,展示组合设计模式,所以我统称控件 Controls
理解: 无子节点
综合以上的划分,我大致需要实现,三个部分
1 、 抽象构件 开发 抽象show方法
2、 树枝构件, 定义各种管理容器Container
3、 树叶构件,定义各种Controls
使用JAVA实现组合模式案例
备注: 以下代码,那些各种控件, 各种窗口,我就用文字模拟了。。。暂时不用代码实现了,需要写太多Class了,篇幅有限。主要是自己体现组合模式这个思想得了。
使用前端typescript, 实现单例模式+组合模式案例, 最终效果
DEMO:总览地址: https://codesandbox.io/s/zuhemoshi-etjv4?file=/index.html
(demo地址加载可能过慢~多刷新几次)
生成结构:
部分代码展示:
index.ts 入口
type.ts [抽象接口构件]
container.ts [树枝构件]
control.ts [树叶构件]
以上只供参考,不供抄袭~J...
版权声明: 本文为 InfoQ 作者【JI】的原创文章。
原文链接:【http://xie.infoq.cn/article/c8b5e54c785f123715e911512】。未经作者许可,禁止转载。
评论