Java知识点-----------单例设计模式

单例设计模式(Singleton),就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的

举例 : 有1个类Customer , 要求该类只能有1个对象

思路 : 1. 构造器静态私有化( 外部无法访问 , 无法在类外部创造对象 ) 

     2. 在Customer内部创建1个对象 , 修饰符为private static

     3. 创建1个公共的静态方法 , 用于返回该对象

1 . 饿汉模式

package com.woniuxy.pratice1;

//饿汉式   先创建单例对象
public class Bank {
	private String name;
	//私有化构造方法,类外部无法创造对象
	private Bank(String name) {
		this.name = name;
	}
	//在类李创造一个私有化静态的对象bank(同时也是该类唯一的一个对象)
	private static Bank bank = new Bank("中国银行");
	//提供公共的静态方法,返回唯一的对象
	public static Bank getBank() {
		return bank;
	}
	
	public void deposit() {
		System.out.println("在"+this.name+"存钱");
	}
}

2. 懒汉模式

package com.woniuxy.pratice1;
//懒汉式
public class Home {
	//私有化构造器,类外部无法创建对象
	private  Home() {
		
	}
	//先声明1个私有的静态对象h,外部无法访问
	private static Home h;
	//提供公共的静态方法获取唯一对象h
	public static Home getHome() {
		//如果第一次调用本方法,h为空则创建对象并赋值给h
		if (h == null) {
			h = new Home();
		}
		return h;
	}

}

  

posted @ 2021-07-04 18:41  清霜半落沙痕浅  阅读(54)  评论(0编辑  收藏  举报