架构师课程第三周作业
一、请在稿纸上手写一个单例模式的实现代码。(拍照提交作业)
单例模式的意思是在一次运行中某个对象只允许创建一个实例。这种模式适合在对一些竞争资源的处理访问。如果全局只有一个实例,可以保证在处理资源的过程中不存在竞争。
单例模式的实现分类:
饿汉式:在类加载的时候创建对象,不支持延迟加载;
懒汉式:与饿汉式相对,将对象初始化延迟到使用对象的时候,不支持高并发;
双重检测:妥协饿汉和懒汉,既支持延迟加载、又支持高并发。
以下是Golang语言的单例模式的简单实现。通过sync包中的Once对象保证之后被初始化一次对象。
二、请用组合设计模式编写程序,打印输出图1的窗口,窗口组件的树结构如图2所示。打印输出示例参考图3。
由于是树形结构,可以使用Golang中的container/list实现。代码如下。
运行结果:
三、总结
本周主要内容有:软件设计模式介绍,介绍了工厂模式、单例模式、组合模式、模板模式、装饰器模式。不管使用不使用设计模式,使用什么设计模式,我们最终的目标都是将软件设计为高内聚、松耦合的整体系统。之所以要设计成这样,是为了维护方便、代码有结构整洁、方便扩展。所以,国外的前人们根据实际经验总结出了一些可适配的方法模式。
虽然有的时候老师觉得这些东西不值一提,但是我在听的时候确实是不太懂,可能是我基础不够好吧。设计模式虽然看似简单,但是内容还是很多的,而且很多的设计模式不好区分,容易混淆。想要把设计模式灵活使用,估计也需要大量的学习与真实场景的实践。对于很多人来说,根本不会有这么多的实践机会能用到所有的设计模式。况且很多时候,我们在使用的过程中也不会刻意的注意这些点。所以,设计模式也不好学。
评论