Java与设计模式(04)--单例模式
2012-12-20 23:55
239 查看
单例模式是个非常简单的设计模式,设计目的就是使得目标类仅能创建一个实例。
需要实现这个设计目标我们需要做如下工作:
由于只能有一个实例,我们不能暴露默认的public构造方法(不能有任何一个public构造方法,即将默认的构造方法使用private隐藏起来),否则可以用new创建实例;
由于我们没有构造方法,我们需要通过一个静态的getInstance方法获得一个类的实例;
具体实现需要考虑到多线程的同步问题;
具体代码如下:
单例类:
测试类:
需要实现这个设计目标我们需要做如下工作:
由于只能有一个实例,我们不能暴露默认的public构造方法(不能有任何一个public构造方法,即将默认的构造方法使用private隐藏起来),否则可以用new创建实例;
由于我们没有构造方法,我们需要通过一个静态的getInstance方法获得一个类的实例;
具体实现需要考虑到多线程的同步问题;
具体代码如下:
单例类:
package com.freesoft.designpattern.singleton; public class Singleton { // 保存唯一一份实例 private static Singleton instance = null; // 隐藏默认构造方法,这样别人无法通过调用new Singleton()来创建对象实例 private Singleton() { } // 需要使得方法是同步方法,防止多线程同时调度时可能发生的问题 public static synchronized Singleton getInstance() { if (null == instance) { instance = new Singleton(); } return instance; } }
测试类:
package com.freesoft.designpattern.singleton; public class SingletonTest { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println(singleton); // 如果是通过new创建的对象,打印出来的对象地址肯定是不一样的 // 这里一样说明通过getInstance方法得到的对象是同一个对象 singleton = Singleton.getInstance(); System.out.println(singleton); } }
相关文章推荐
- [Java] 设计模式之工厂系列 04 (自定义模拟 spring 读取xml文件 beanFactory)
- java设计模式04
- [Java] 设计模式之工厂系列 04 (自定义模拟 spring 读取xml文件 beanFactory)
- JAVA设计模式(04):创建型-建造模式(Builder)
- java 23种设计模式 04 单例模式
- Java常用的设计模式04:常用设计模式之建造者模式(创建型模式)
- java设计模式--状态模式--04
- java设计模式04_单例模式
- Java设计模式学习04——原型模式
- Java设计模式(04-- 模板方法模式)
- Java设计模式04--建造者(生成器)模式
- OOP设计模式[JAVA]——04命令模式
- JAVA设计模式(04):创建型-建造模式(Builder)
- Java设计模式圣经连载(04)-单例模式
- 【Java设计模式04】——观察者模式
- JAVA设计模式是个什么玩意儿_04_建造者模式
- 黑马程序员_java04_单例设计模式
- 设计模式java-04.代理模式
- OOP设计模式[JAVA]——04命令模式
- Java设计模式圣经连载(04)-单例模式