设计模式综合实战项目x-gen 系列四

本文介绍了如何通过引入单例模式和桥接模式优化项目。单例模式用于确保配置管理类只被实例化一次,节省运行时间和内存。桥接模式则用于分离配置数据获取的抽象和实现,以应对不同数据源和数据结构的变化需求。通过这两个设计模式,实现了配置数据管理的高效和灵活扩展。
摘要由CSDN通过智能技术生成

1 加入单例模式

1:面临的问题

看看上面的基本实现,会发现一些问题:

Ø如果GenConfEbo被创建多次的话,那么就会重复获取配置数据,浪费程序运行时间;

Ø并且每个GenConfEbo的实例都会缓存这些数据,浪费内存空间。

Ø同一个类里面,既有实现GenConfEbi要求的对外功能,又有内部实现需要的获取配置数据和缓存数据的功能,从类的设计上来说,这个类的职责太不单一了,应该分离一部分职责出去。

因此这种实现肯定是不好的,那么怎么解决呢?

2:用单例模式来解决

(1):模式定义:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。

(2):模式本质:
单例模式的本质:控制实例数目。

(3):基础知识:
(1)单例模式是用来保证一个类在运行期间只会被创建一个类实例的

(2)单例模式还提供了一个全局唯一访问这个类实例的访问点,通常就是那个getInstance方法

(3)单例模式只关心类实例的创建问题,并不关心具体的业务功能。

(4)单例模式是一个虚拟机范围内单例,不适用于集群等环境

(5) 单例模式的实现有很多种,除了常见的懒汉式和饿汉式外,还有利用缓存来实现、双重检查加锁的实现、Lazyinitialization holder class模式、以及枚举的实现方式等

(6)使用单例模式的时候要注意它的线程安全性

(7)单例模式体现了延迟加载、缓存等常见的设计思想

(8)单例模式是可以很容易的扩展到多实例控制的

(4):常见应用场景:

用来控制不需要创建多个实例,但是又需要有实例的类,因为这些类可能有属性,这些属性可以缓存一些值,这些值只需要一份。

首先,单例模式控制了运行期间只创建一个类实例,这就意味着获取配置数据的功能只会被执行一次,从而节省运行的时间。

其次,单例类实例是可以有自己的属性的,也就是能把获取的配置数据缓存到这个单例类实例的属性中,这样一来,如果类实例只有一个,那么就能保证在内存里面缓存这些配置数据的空间只有一份,从而节省内存空间。

另外,并不是把GenConfEbo做成单例,而是把其中的获取配置数据和缓存配置数据的功能分离出来,单独做成一个单例类,这样使得这个类的职责分配都更为合理。

3:核心代码示例

(1)看看分离出来的单例实现,当然单例的实现方式又有很多种,这里选用饿汉式的实现方式,既简单又线程安全。示例代码如下:

/**
示意:配置管理的单例类,实现获取配置数据,缓存配置数据的管理
/
publicclass ConfManager {
privatestatic ConfManager instance = new ConfManager();
private ConfManager() {
//创建实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值