单例模式

来源:互联网 发布:公众号矩阵 编辑:程序博客网 时间:2024/06/07 08:41

单例模式


特点

1.单例模式只有一个实例2.所有对象共用一个实例

单例模式之懒汉式

package single;public class Single {    // 该类的实例    private static Single single;    /**     * 当没有该类的实例的时候创建一个实例     *      * @return 返回该类的实例     */    public static Single getInstance() {        // 因为加锁很消耗系统资源,在这里利用判断代理锁的资源        if (single == null) {            // 用该类的类对象作为锁            synchronized (Single.class) {                if (single == null) {                    // 如果没有创建实例则创建一个该类的实例                    single = new Single();                }            }        }        return single;    }    /**     * 打印方法     * @param str 要打印的信息     */    public void print(String str){        System.out.println(str);    }}

单利模式之饿汉式

package single;public class Single2 {    // 该类的实例    private static Single2 single = new Single2();    /**     * 返回该类的实例     *      * @return 返回该类的实例     */    public static Single2 getInstance() {        return single;    }    /**     * 打印方法     * @param str 要打印的信息     */    public void print(String str){        System.out.println(str);    }}

测试类

package single;public class SingleTest {    public static void main(String[] args) {        // 单利使用类以及方法        Single.getInstance().print("我是打印的信息");        Single2.getInstance().print("我是打印的信息2");    }}

现象

我是打印的信息我是打印的信息2

结论

该设计模式目的是让所有使用到该类的对象共享一个实例。
1 0