SSH中用到的设计模式之一——单例模式

来源:互联网 发布:自助设计软件 编辑:程序博客网 时间:2024/06/13 23:48

       这期主要是总结并复习一下ssh框架中底层代码中用到的设计模式(学习这些设计模式是需要一些基础的,如果没有开发过一些小的项目,建议还是先实际敲敲代码再来看)实际上这些框架也就是用来解决开项目效率低而由前人所开发出来的,借用李刚老师书中的一句话:“开发一个大型企业级应用时,常常必须面对各种各样的问题,而这些问题常常具有特定的场景,而且往往会重复出现,借助与前人已有的、较为成熟的解决方案来解决这些问题,既可提供应用开发的效率,也可保证应用开发的质量。这些前人已有的、较为成熟的解决方案就是所为的设计模式。”

       在建筑设计大师Alexander的《建筑的永恒方法》一书中说到,模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系,一种相对成熟的设计方案。

下面开始介绍第一个设计模式:


1-单例模式

            

      用过spring的都知道,单例是Bean中的必备属性,大多数的人看法单例模式是用到这种模式下的类时,只能实例化一个,实际上这种理解还是有一些错误的,我个人认为,单例实际上指的是在同一时间的同一动作下,使用这种类的时候,你呢,仅仅能实例化这么一个对象。打一个比较容易明白的例子,当你在登陆淘宝的时候,在同一个浏览器里,只能同时使用这么一个登录名来进行登陆,但是如果用两个不同的浏览窗口,实际上是可以用两个账号登陆的,也可以理解成实例话了两个浏览器类吧。


下面呢,实际的演示一个例子,在这之前,你需要牢记两点,(这里用单例模式创建的类我称之为单例类。

第一点:使用private修饰该单例类的构造器,从而将该类的构造方法隐藏起来,这样就没法在外部调用此类的构造函数,当然也就不能实例化了。

第二点:第一点的话,有人可能问,你不能调用构造函数,咋实例化对象呢?那第二点就是说,需要提供一个在此单例类中提供一个public方法,作为该类的访问点,此方法用static修饰符修饰,这样就能用类名来调用这个方法了。


下面实际来个例子:    

class Singleton{   //使用一个变量来缓存曾经创建的实例   private static Singleton instance;   //将构造器使用private修饰,隐藏该构造器   private Singleton(){}   //提供一个静态方法,用于返回Singleton实例   //该方法可以加入自定义的控制,保证只产生一个Singleton对象   public static Singleton getInstance()   {       //如果instance为null,表明还不曾创建Singleton对象       //如果instance不为null,则表明已经创建了Singleton对象,将不会执行该方法       if(instance == null)       {           //创建一个Singleton对象,并将其缓存起来           instance = new Singleton();           System.out.println("instance类为null");           return instance;       }       else       {           System.out.println("instance类已经创建过了,you out!");           return instance;       }   }}public class SingletonTest {    public static void main(String[] args) {        //创建Singleton对象不能通过构造器,只能通过getInstance方法        System.out.println("第一个实例");        Singleton s1 = Singleton.getInstance();        System.out.println("第二个实例");        Singleton s2 = Singleton.getInstance();        //判断是否,将输出true        System.out.println(s1 == s2);    }}

以上就是单例模式的例子,使用单例模式主要有两个优势


1、减少创建Java实例所带来的系统开销。


2、便于系统跟踪单个Java实例的生命周期、实例状态等。
0 1
原创粉丝点击