单例模式代码

来源:互联网 发布:大富翁数据 编辑:程序博客网 时间:2024/05/16 11:38

单例模式作为Java和Android中使用最广发的设计模式,了解它对于我们设计出优秀的代码有很大的帮助。针对之前的文章进行更加详细的补充,也推荐大家前去学习《大话设计模式》和《Android源码解析和设计模式》这两本书。对于初学者学习设计模式很有帮助。

言归正传。

单例模式的定义

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

使用场合

不能自由构造对象的情况下(比如,某个类实例一次会消耗很多资源,如要访问IO和数据库资源,考虑使用单例模式)

单例模式特点

①构造方法(函数)被私有化(private);

②只能通过getInstance()方法取得Singleton(单例)类的实例化对象;

③不管外部如何操作,最终也只有一个实例化对象;

④在单例设计模式中一定会存在一个static方法,用于取得本类的实例化对象。


package com.test6;public class TestDemo {public static void main(String[] args) {Singleton inst=null;  //声明对象inst=Singleton.getInstance();// 利用“类.static 方法()”取得实例化对象inst.print();//调用方法}} //定义一个类,单例模式之饿汉单例模式 class Singleton{  private static Singleton instance=new Singleton(); private Singleton() { //构造方法私有化}public void print(){System.out.println("Hello Java");}//公有的静态函数,对外暴露获取单例对象的接口//通过该静态方法返回一个静态对象instance public static Singleton getInstance() {  //get方法,取得本类对象 return instance; } }

单例模式之懒汉单例模式

public class Singleton{private static Singleton instance;private Singleton(){}public static synchronized Singleton getInstance(){if(instance == null){instance = new Singleton();}return instance;}}

懒汉模式是声明一个静态对象,并在用户第一次调用getInstance时进行初始化,上面的饿汉模式是在声明静态对象时就已经初始化。(不推荐使用该模式)


单例模式之DCL单例模式(推荐使用)

public class Singleton{  //在JDK是1.5或之后的版本,下面的①改为private volatile static Singleton mInstance = null; private static Singleton mInstance = null;//①private Singleton(){}public void doSomething(){}public static Singleton getInstance(){//第一次判断为了避免不必要的同步if(mInstance == null){synchronized(Singleton.class){if(mInstance == null){//为了在null的情况下创建实例mInstance = new Singleton();}}}return mInstance;}}

//静态内部类单例模式public class Singleton{private Singleton(){}public static Singleton getInstance(){return SingletonHolder.sInstance;}/*****/静态内部类private static class SingletonHolder{private static final Singleton sInstance = new Singleton();}}


1 0
原创粉丝点击