24-单例设计模式

单例设计模式

单例设计模式(多例设计模式)主要是一种控制实例化对象产生个数的设计操作。

单例设计

由于某些要求,只要求某些类提供一个实例化对象,首先应该控制的时候构造方法,因为所有的实例化对象要产生一定要调用构造方法,如果构造方法“没有了”,那么自然无法产生实例化对象。
如果将构造方法私有化,则无法进行实例化对象初始化。
所以必须想办法产生一个实例化对象以供使用。
1、private访问权限:不能再外部访问但可在类内部使用。
2、此时考虑static属性
3、类中属性应封装后使用
4、要保证

class Singleton{		//单例设计结构
	private static final Singleton INSTANCE = new Singleton();
	private Singleton();
	public static Singleton getInstance(){
		return INSTANCE;
	}
}

有些类不需要重复产生对象
单例设计模式:懒汉式、饿汉式。之前的定义属于饿汉式(系统加载时自动提供有类对象),懒汉式(在第一次使用进行实例化对象处理)。
将单例设计为懒汉式:

class Singleton{		//单例设计结构
	private static Singleton instance;
	private Singleton() {};
	public static Singleton getInstance(){
		if (instance == null){		//第一次使用
			instance = new Singleton();		//实例化对象
		}
		return INSTANCE;
	}
}

面试:编写一个Signleton程序,说明特点?

  • 懒汉(考虑线程同步问题)和恶汉都写上
  • 特点:构造方法私有化, 类内部提供static方法获取实例化对象,不管外部如何操作永远只有一个实例化对象。

多例设计

单例设计是只保留一个实例化对象,多例设计是指保留多个实例化对象,如定义个描述性别的类,则对象只有两个(男,女)

class Color{
	private static final Color RED = new Color("red");
	private static final Color GREEN = new Color("Gre");
	private static final Color BLUE = new Color("Blu");

	private Color(String title){		//构造方法私有化
		this.title = title;
	}
	public static Color getInstance(String color){
		switch(color){
			case "red": return RED;
			case "Gre": return GREEN;
			case "Blu": return BLUE;
			default:return null;
		}
	}
	public String toString(){
		return this.title;
	}
}

多例设计与单例设计本质是相同的,一定会在内部提供有static方法以返回实例化对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值