设计模式实用案例之单例模式
2016-12-28 14:36
288 查看
达人科技 2016-12-22 17:57
单例模式的应用场景是,在系统中有一些东西提供基础的、固定的服务,不需要灵活的操作和变动,以get操作为主。
所以我们不需要创建类的对象去操作,这样可以提升系统的性能和效率。
比如获取配置文件信息、获取数据库连接池等。
我们来看一下获取配置文件信息的例子:
单例模式需要配合static属性和static方法来使用。因为只有类的static属性和方法才不需要创建变量就能访问,这样我们就能利用这个静态属性去存储我们只需要一个实例的对象。
单例模式主要有如下两个优势:
1) 减少创建Java实例所带来的系统开销
2) 便于系统跟踪单个Java实例的生命周期、实例状态等。
关于静态变量和静态方法的理解,请参考百度。
上文的代码中使用了static块来初始化单例对象,也可以通过静态方法来做:
补充,hibernate中的应用
hibernate中的SessionFactory是一个重量级的类,创建该类的对象实例会耗费比较多的系统资源,如果每次需要时都创建一个该类的实例,显然会降低程序的执行效率,所以经常将对该类的实例化放在一个static{}中,只需第一次调用时执行,提高程序的执行效率,如下:
本文为头条号作者发布,不代表今日头条立场。
单例模式的应用场景是,在系统中有一些东西提供基础的、固定的服务,不需要灵活的操作和变动,以get操作为主。
所以我们不需要创建类的对象去操作,这样可以提升系统的性能和效率。
比如获取配置文件信息、获取数据库连接池等。
我们来看一下获取配置文件信息的例子:
import com.jfinal.kit.Prop; import com.jfinal.kit.PropKit; /** * 配置辅助类 */ public class ConfigUtil { private static Prop prop = null; static{ if(prop == null) prop = PropKit.use("CPSIS.properties"); } /** * 获取实时数据库配置文件属性对象 * @return */ public static Prop getProp{ return prop; } /** * 获取实时数据库实现接口类 * @return */ public static String getRtdbClassname{ return prop.get("rtdb.classname"); }
/** * 下面还可以有很多其他的静态get函数,我们通过这些函数去获取配置信息 * @return */
…… }
单例模式需要配合static属性和static方法来使用。因为只有类的static属性和方法才不需要创建变量就能访问,这样我们就能利用这个静态属性去存储我们只需要一个实例的对象。
单例模式主要有如下两个优势:
1) 减少创建Java实例所带来的系统开销
2) 便于系统跟踪单个Java实例的生命周期、实例状态等。
关于静态变量和静态方法的理解,请参考百度。
上文的代码中使用了static块来初始化单例对象,也可以通过静态方法来做:
public class Singleton { private static Singleton instance; private Singleton { } public static Singleton GetInstance { return instance ?? (instance = new Singleton); } }
补充,hibernate中的应用
hibernate中的SessionFactory是一个重量级的类,创建该类的对象实例会耗费比较多的系统资源,如果每次需要时都创建一个该类的实例,显然会降低程序的执行效率,所以经常将对该类的实例化放在一个static{}中,只需第一次调用时执行,提高程序的执行效率,如下:
static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory; } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace; } }
本文为头条号作者发布,不代表今日头条立场。
相关文章推荐
- 我的实用设计模式之 关于Policy-based design在Windows Mobile网络连接管理的应用
- .NET实用设计模式:观察者模式(Observer)
- 关于Visual C#.NET 2008 程序设计案例集锦 (计算机实用技术案例系列)的读后感
- .NET实用设计模式:工厂模式(Factory)
- 一个实用的web设计模式
- C#设计模式-合成模式-案例分析
- 我的实用设计模式之Simple Factory,Factory Method和Abstract Factory
- 我的实用设计模式之Observer模式
- .NET实用设计模式:工厂模式(Factory)
- Java实用设计模式:Command(命令模式)
- .NET实用设计模式:工厂模式(Factory)
- ASP.NET和Ajax应用一个超级实用的设计模式---享元模式
- 我的实用设计模式之关于Policy-based design
- 设计原则与模式: 案例介绍--CppUnit
- .NET实用设计模式:工厂模式(Factory)
- .NET实用设计模式:组合模式(Composite)
- .NET实用设计模式:工厂模式(Factory)
- NET实用设计模式:观察者模式(Observer)
- [C#]我的实用设计模式之四-Simple Factory,Factory Method和Abs
- 学习简单实用的 Web 服务设计模式,第 1 部分