前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是多例模式?
在了解了单例模式之后,多例模式就会更加轻松,本质上多例模式就是单例模式的扩展,多例模式也叫对象池模式,是一种用于限制类实例化次数,可以创建指定数量的实例.
二、多例模式的优缺点
优点:
-
可以限制实例数量:多例模式可以限制实例数量,确保系统中只有指定数量的实例存在,避免过多的资源消耗。
-
可以复用已有实例:多例模式可以复用已有实例,避免重复创建对象,提高系统性能。
-
可以灵活控制实例的生命周期:多例模式可以灵活控制实例的生命周期,可以在需要时创建实例,也可以在不需要时销毁实例,避免浪费系统资源
缺点:
-
难以扩展:多例模式的实例数量是固定的,难以动态地增加或减少实例数量。
-
难以测试:由于多例模式的实例数量是固定的,难以对每个实例进行单独的测试。
-
破坏封装性:多例模式需要全局访问实例,这破坏了封装性,使得代码难以维护和扩展。
-
代码复杂度高:多例模式的实现需要考虑线程安全、序列化等问题,因此代码复杂度较高。
三、多例模式的结构:
四、多例模式实战
以上图结构为例,假设现在有一客人,要去拜访远房亲戚家,家里人有三口人,客人到家门口后需要询问开门,这个时候一家三口谁都有可能去开门.
1.构建Master
2.guset开始访问
3.最终开门的结果
看来永远都是做儿子的最累,这个亲戚不是妈妈家的吧,不愿意开门.
五.总结
多例模式在数据库连接池,线程池等地方多有用到,如果不针对多例模式去做一些策略情况,很有可能会出现其中一个实例多次执行,而别的实例一次都没有用到的情况,因此在实际使用过程中也可以借鉴下线程池的设计思想,集思广益.