单列设计模式

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

单例设计模式:

如果要求某一个类在程序的一次运行或者一个运行着容器(后面的概
念,比如说Tomcat容器,Spring容器)中只产生一个对象,此时就需
要使用单列设计模式来控制对象的实例化个数
package com.sxt
class SingleTon{
}
public class Test {
	public static void main(String[] args) {
	System.err.println(new SingleTon());
	System.err.println(new SingleTon());
	System.err.println(new SingleTon());
	System.err.println(new SingleTon());
	System.err.println(new SingleTon());
	}
}

在这里插入图片描述
以上的代码实例化的对象是五个,此时要求自爱本次程序的运行中只产生一个对象应该怎么取操作呢?
之所以能在主方法中实例化SingleTon类对象是因为能调用SingleTon类的构造方法,如果将该类的构造方法私有化,之后就不能在主方法中实例化该类对象
构造方法私有化:
在这里插入图片描述
此时就不能在主方法中调用SingleTon类的构造方法了,如何取得该类对象呢?
既然在SingleTon类的外部不能调用构造方法,那么就在本类中实例化本类对象,之后将本类对象保存到一个静态属性中

 package com.sxt;

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

class SingleTon{
	private SingleTon() {};//构造方法私有化
	static SingleTon instance=new SingleTon();
}

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

package com.sxt;

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());
   }
}

class SingleTon{
	private SingleTon() {};//构造方法私有化
    private static final SingleTon INSTANCE = new SingleTon();
    //提供一个方法方位instance属性
    public static SingleTon getInstance() {
    	return  INSTANCE;
    }
}

在这里插入图片描述
以上SingleTon类就是一个单例设计模式的雏形
总结:
单例模式的特征
1.构造方法私有化
2.在本类中实例化本类对象并且保存到一个静态属性中
3.该静态属性要封装
4.为该属性提供一个静态方法供给外部使用
单例设计模式又分为了懒汉式和饿汉式,以上代码就是一个饿汉式,它们之间的区别?

  • 懒汉式:只有在调用取得单例类的对象的静态方法的时候才会创建对象
  • 饿汉式:一旦加载类的时候就创建了对象
    懒汉式的单例设计模式:
package com.sxt;

public class TestDemo01 {
	public static void main(String[] args) {
		System.out.println();
		System.out.println(SingleTon.getInstance());
		System.out.println(SingleTon.getInstance());
		System.out.println(SingleTon.getInstance());
		System.out.println(SingleTon.getInstance());
		System.out.println(SingleTon.getInstance());
	}
}

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

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值