码迷,mamicode.com
首页 > 编程语言 > 详细

java中的单例模式

时间:2018-06-12 22:34:38      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:class   static成员   stat   bsp   new   创建对象   私有   匹配   设计模式之单例模式   

设计模式之单例模式

基本概念

单例模式是一种生产对象型的设计模式。

单例模式指的是某个类的对象在同一时间只允许存在1个实例(对象)。

实现

假设存在类King:

public class King {
}

普通的类可以随意的创建对象:

King k1 = new King();
King k2 = new King();
King k3 = new King();

因为当创建一个类,并且没有显式的指定构造方法时,等效于:

public class King {
    public King() {
    }
}

要实现单例模式,首先,就必须不允许随意创建对象!则:

public class King {
    private King() {
    }
}

一旦将构造方法私有化,则在类的外部是不允许调用构造方法的!此时,只有类的内部才可以调用构造方法创建对象:

public class King {
    private King king = new King();

    private King() {
    }
}

在以上代码中,创建的king对象就是唯一被创建出来的对象!那么,当类的外部需要时,提供匹配的get方法即可!

public class King {
    private King k = new King();

    private King() {
    }

    public King getInstance() {
        return k;
    }
}

虽然以上代码看似可行,但是,实际使用时,getInstance()方法是无法被调用的!为了保证在没有King类的对象之前就可以调用getInstance()方法,必须使用static进行修饰:

public class King {
    private King k = new King();

    private King() {
    }

    public static King getInstance() {
        return k;
    }
}

由于被static修饰的成员,只能访问其它static成员(不可以访问其它非static成员),因为一旦使用static后,该成员将会最优先加载到内存中!而其它没有被static修饰的数据此时还没有加载到内存中,所以不可以访问!最终,还需要使用static修饰King的对象:

public class King {
    private static King k = new King();

    private King() {
    }

    public static King getInstance() {
        return k;
    }
}






 

java中的单例模式

标签:class   static成员   stat   bsp   new   创建对象   私有   匹配   设计模式之单例模式   

原文地址:https://www.cnblogs.com/mylzhy/p/9175234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!