java设计模式- (1)单例模式

本文详细介绍了Java中四种常见的单例模式实现方法:懒汉式、双重检验锁模式、饿汉式及静态内部类,并提供了代码示例。

  参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式。

  单例模式(Singleton Pattern)是 Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,
它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,
同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

(1)、懒汉式

public class SingleTon {

     private static Singleton instance;
  // 让构造函数为 private,这样该类就不会被实例化
private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }

(2)、双重检验锁模式

public class SingleTon {

     private static SingleTon instance = null; 
     private  SingleTon() { } 
      //静态工程方法,创建实例 
      public static SingleTon getInstance() {
             if(instance == null) {
              synchronized (instance) {
                 if(instance == null)
                      instance = new SingleTon();
             }
             } 
        return instance;
     }
  //测试方法
  public void showMessage() {
    System.out.println("Hello World!");
  }


}


}            

(3)、饿汉式  推荐使用

public class SingleTon {

    private static final SingleTon instance = new SingleTon();
    private  SingleTon() { } 

    public static SingleTon getInstance() {
        return instance;
    }
}    

(4)、静态内部类  推荐使用

public class SingleTon { 
        private static class SingleTonHolder {  
            private static final SingleTon INSTANCE = new SingleTon();  
           }  
        private SingleTon (){}  
        public static final SingleTon getInstance() {  
            return SingleTonHolder.INSTANCE; 
        }  
}

测试:

public static void main(String[] args) {

        //不能实例化SingTon这个类
        // SingleTon singleTon = new SingleTon();
        
        //获取唯一可用的对象
        SingleTon singleTon =SingleTon.getInstance();
        singleTon.showMessage();
    }

新手若有不足之处,请多多指教。

 

转载于:https://www.cnblogs.com/feiii/p/6122496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值