第三周学习总结
设计模式就是人们在日常工作中总结出来的,能够写出可扩展、可复用、可读、可维护的代码的套路。
设计模式的本质就是解耦,各种解耦。
设计模式有二十多种,发展到现在又增加了一些,然后高废弃了一些。
单例模式:
指一个类只能创建一个实例(对象),这里的一个实例指的是进程内,即多个线程共享一个类的实例;进程内唯一也就是说进程内的线程间也是唯一的。
单例的实现方式有:饿汉式、懒汉式、静态内部类和枚举方式。这几种实现方式主要是为了满足不同的应用场景及对资源需求的迫切程度。
在设计单例模式时,需要注意的细节有:
构造函数需要private权限,避免被外部通过new创建实例
通过一个public static getInstance()方法返回对象
创建对象时的线程安全问题
是否支持延迟加载
getInstance方法是否高效
用处:
从业务概念上,有些数据在系统中只应该保存一份,就比较适合设计为单例类。比如,系统的配置信息类。除此之外,我们还可以使用单例模式解决资源访问冲突的问题
组合模式:
组合模式主要适用于树型结构的数据,它能非常优雅的编写处理该类数据的代码,解决部分与整的关系。
组合模式,将一组对象组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现。使用组合模式的前提在于,你的业务场景必须能够表示成树形结构。所以,组合模式的应用场景也比较局限,它并不是一种很常用的设计模式。
在设计组合模式时,需要注意的细节有:
针对叶子节点和非叶子节点进行抽象,形成父类
非叶子节点实现的方法中,采用递归算法,注意不要形成无限递归
叶子节点的实现方法,就是递归算法的结束点
非叶子节点和叶子节点按照层级关系进行组合编码
版权声明: 本文为 InfoQ 作者【傻傻的帅】的原创文章。
原文链接:【http://xie.infoq.cn/article/acdc3a53beab5fa97c50c0a17】。文章转载请联系作者。
评论