设计模式-单例设计模式

设计模式概念

所谓的设计模式就是为了提高代码的重要性、优雅性、实现高内聚低耦合、以及满足开闭原则提出的开发思想,目前成熟的设计模式有23种,其中以下几种我们需要掌握:
单例设计模式、工厂设计模式(简单工厂、方法工厂、抽象工厂)、代理设计模式(静态代理、动态代理(JDK原生代码实现、cglib实现))、适配器设计模式、模板设计模式、装饰者设计模式。

一、单例 设计模式

如果要求某一个类在程序的一次运行或者一个运行着容器(比如说tomcat容器、Spring容器)只产生一个对象,此时就需要使用单例设计模式来控制对象的实例化个数
DEMO:观察代码:

 package com.sun;
class SingleTon{
}
public class Test {
   public static void main(String[] args) {
	    System.out.println(new SingleTon());
	    System.out.println(new SingleTon());
	    System.out.println(new SingleTon());
	    System.out.println(new SingleTon());
	    System.out.println(new SingleTon());
   }
}

在这里插入图片描述
以上将本类对象保存到静态属性,静态属性是全局变量,是共享的,所以在主方法多次取得对象都是同一个,但是我们说过开发中类的属性尽量要使用prvate封装,之后为封装的属性提供一个方法供给外部调用。

DEMO:提供静态方法

//饿汉式单例设计模式
package com.sun;
class SingleTon{
	 private   SingleTon() {};//构造方法私有化
     private  static  final   SingleTon   INSTANCE=new SingleTon();
    //提供一个方法方位instance属性
     public  static  SingleTon  getInstance() {
    	return  INSTANCE;
    }
}
public class Test {
   public static void main(String[] args) {
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
   }
}

在这里插入图片描述
DEMO:懒汉式的单例设计模式

 package com.sun;
class SingleTon{
	private   SingleTon() {};//构造方法私有化
    private	static     SingleTon   instance;
    //提供一个方法方位instance属性
    public  static  SingleTon  getInstance() {
    	 if(instance==null) {
    		 instance=new SingleTon();
    	 }
    	 return  instance;
    }
}
public class Test {
   public static void main(String[] args) {
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
	    System.out.println(SingleTon.getInstance());
   }
}

饿汉式和懒汉式的区别
饿汉式:只有在调用取得单例类的对象的静态方法的时候才会创建对象
懒汉式:一旦加载类的时候就创建了对象
总结

  1. 单例设计模式是让某个类在程序的一次运行中或者一个运行的容器中只产生一个对象
  2. 单例模式的特征:
    1. 构造方法私有化
    2. 将本类对象保存带一个静态属性中
    3. 提供一个静态方法取得本类对象
    4. 单例设计模式分为懒汉式和饿汉式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值