1 课程讲解
1.1 类型:
1.2 定义:
1.3 应用场景:
1.4 优点:
1.5 缺点:
1.6 扩展:
1.7 和其他设计模式比较:
1 课程讲解
1.1 类型:
结构型:
1.2 定义:
◆定义:提供了减少对象数量从而改善应用所需的对象结构的方式
◆运用共享技术有效地支持大量细粒度的对象
(可能对于内存溢出类型的问题解决有效)(池子)
1.3 应用场景:
◆ a 常常应用于系统底层的开发,以便解决系统的性能问题。
(系统中如果有大量的对象,可能会造成内存溢出,我们可以把共同的部分抽象出来,有相同的业务请求,则返回在内存中的已有对象,避免重新创建。)
◆ b 系统有大量相似对象、需要缓冲池的场景。
(某个对象的复用度越高,越倾向于使用享元模式)
1.4 优点:
◆减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率
◆减少内存之外的其他资源占用
(a new对象需要时间,当我们直接从池子中取对象的时候,对象不用创建,节省了时间,特别是当对象并发或者使用率比较高的时候,提高了效率
b 文件句柄和窗口句柄是有一定的限制的,当同一对象被特别多的时候,往往可能导致句柄达到极限而导致崩溃)
1.5 缺点:
◆关注内/外部状态、关注线程安全问题
我们使用共享模式的时候,大都是使用hashMap,不会用HashTable(用hashTable会由于同步锁造成效率过低(特别是应用在报考系统3天内登录多少人,某一天微博大事件情况))
◆使系统、程序的逻辑复杂化
外部状态不应该随着内部状态的变化而变化
1.6 扩展:
内部状态:
在享元模式内部并且不会随着环境改变而改变的共享部分;无论外部环境如何变化,我都不变,并且该状态在享元模式内部。
外部状态:
随着环境改变而改变的就是外部状态,这种状态记录在享元模式的外部。
1.7 和其他设计模式比较:
享元模式和代理模式:
代理模式是代理一个类,如果生成这个代理类花的资源和时间比较多,可以使用享元模式处理这个类的速度。
享元模式和单例模式:
容器单例是两种方式的一种结合。享元模式是一种复用对象的思想