Singleton 单态模式

来源:互联网 发布:淘宝优惠券淘口令 编辑:程序博客网 时间:2024/05/01 15:23

 

模式定义
Singleton模式定义了个一个类只有一个实例,无论调用的方法来自何方。这个类实例具有全局变量的性质。

使用范围

  • 系统需要某个类必须只有一个实例
  • 系统需要某个类必须一次性的初始化某个过程

使用方法

举例说明
public class MySingleton {    private static MySingleton s = new MySingleton();    private int i = 0;    private MySingleton() {        //...    }    public static MySingleton getInstance() {        return s;    }    public void add() {        i++;    }    public int getValue() {        return i;    }}

或者也可以用Lazy Initialization(初始化延迟)的方法定义实例变量。

public class YourSingleton {    private static YourSingleton s = null;    private YourSingleton() {        //...    }    public static synchronized YourSingleton getInstance() {        if (s == null) {            s = new YourSingleton();        }        return s;    }}

客户端方法:

public class Client {    public static void main(String args[]) {        MySingleton ms1 = MySingleton.getInstance();        ms1.add();        MySingleton ms2 = MySingleton.getInstance();        System.out.println("ms1:=" + ms1.getValue());        System.out.println("ms2:=" + ms2.getValue());    }}

因为MySingleton.getInstance()只返回同一个相同的实例,因此无论ms1改变该实例的对象,ms2始终保持一致性。运行结果:

ms1:=1ms2:=1

下载示例

  • Java代码 zigzagsoft_designpattern_singleton.rar
原创粉丝点击