单利模式与缓存功能的实现
2005-07-23 15:40
211 查看
在《设计模式》一书中,作者这样来叙述单例模式的:确保一个类只有一个实例并提供一个对它的全局访问指针。
为了确保全局只有一个实例,所有访问这个类的实例的指针的地址保证相同,必须满足下面的几个条件:
私有的构造函数;
自行创建这个事例;
静态的实例化方法提供全局唯一实例。
在单例模式中又可以分为饿汉式单利模式和懒汉式单例模式。所谓饿汉式单例模式就是在类被访问时这个唯一的实例便被创建,而不管他是否会被使用;而懒汉式单例模式在类被加载的时候不会被实例化,只有第一次使用静态实例化方法访问的时候才会被实例化。
从理论上分析饿汉式单例模式实现简单,但却会在一定程度上降低运行效率,而懒汉式单例模式虽然不会有运行效率的问题,实现方法却有些复杂。下面是这两种单例模式的代码示例:
饿汉式单例模式
public class EagerSingleton
public class LazySingleton
public class LazySingleton
关于单例模式详细内容可以参考如下内容:
http://xxol.net/Edu/Development/Java/0541312241282488.htm
http://xxol.net/Edu/Development/Java/0541312240656996.htm
http://xxol.net/Edu/Development/Java/0541312240591257.htm
http://xxol.net/Edu/Development/Java/0541312235356276.htm
登记式多例模式是在单例模式的基础上延伸出来的,利用关键字来获取全局唯一对象实例。因此简单的缓存功能的实现也可以借助这种方法来实现,不同的是对象的实例化不是由缓存容器来实现,而是由缓存容器之外的方法去创建,然后跟据关键字从缓存容器获取这一实例,或者根据关键字来修改和删除这个实例。由此可见缓存器的功能要比登记时多例模式的功能更加灵活,而不会仅仅局限在对象实例的访问。
为了确保全局只有一个实例,所有访问这个类的实例的指针的地址保证相同,必须满足下面的几个条件:
私有的构造函数;
自行创建这个事例;
静态的实例化方法提供全局唯一实例。
在单例模式中又可以分为饿汉式单利模式和懒汉式单例模式。所谓饿汉式单例模式就是在类被访问时这个唯一的实例便被创建,而不管他是否会被使用;而懒汉式单例模式在类被加载的时候不会被实例化,只有第一次使用静态实例化方法访问的时候才会被实例化。
从理论上分析饿汉式单例模式实现简单,但却会在一定程度上降低运行效率,而懒汉式单例模式虽然不会有运行效率的问题,实现方法却有些复杂。下面是这两种单例模式的代码示例:
饿汉式单例模式
public class EagerSingleton
public class LazySingleton
public class LazySingleton
关于单例模式详细内容可以参考如下内容:
http://xxol.net/Edu/Development/Java/0541312241282488.htm
http://xxol.net/Edu/Development/Java/0541312240656996.htm
http://xxol.net/Edu/Development/Java/0541312240591257.htm
http://xxol.net/Edu/Development/Java/0541312235356276.htm
登记式多例模式是在单例模式的基础上延伸出来的,利用关键字来获取全局唯一对象实例。因此简单的缓存功能的实现也可以借助这种方法来实现,不同的是对象的实例化不是由缓存容器来实现,而是由缓存容器之外的方法去创建,然后跟据关键字从缓存容器获取这一实例,或者根据关键字来修改和删除这个实例。由此可见缓存器的功能要比登记时多例模式的功能更加灵活,而不会仅仅局限在对象实例的访问。
相关文章推荐
- JSP模式2 实现用户注册的功能
- iOS开发-清理缓存功能的实现
- JSP模式2 实现用户注册的功能
- Android 实现视屏播放器、边播边缓存功能,附源码
- JSP模式2 实现用户注册的功能
- Android实现夜间模式切换功能实现代码
- 在SQL Server2000里怎样实现缓存依赖功能
- Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
- 清理缓存功能的实现
- 设计模式(九)-桥接模式(Bridge Pattern)——将类的功能层次结构与实现层次结构分离
- Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)
- FL2440——RT3070 STA模式 实现无线上网功能
- Java使用组合模式实现表示公司组织结构功能示例
- spring集成redis实现缓存功能
- Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)
- 【iOS开发-54】案例学习:通过UIScrollView的缩放图片功能练习代理模式的具体实现
- Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)
- 编译安装nginx并实现反向代理负载均衡和缓存功能
- RT3070无线网卡AP模式——开发板实现路由功能并使客户端成功联网