java面试题之单利设计模式

java面试题之单利设计模式

单利设计模式

什么叫单利设计模式呢?
就是保证类在内存中只有一个对象。

Java 是万物皆对象 那么如何保证只能有一个对象呢?

* (1)控制类的创建,不让其他类来创建本类的对象。private
* (2)在本类中定义一个本类的对象。Demo d;
* (3)提供公共的访问方式。  public static Demo getMyDemo(){return d}
  1. 饿汉式单利
class Demo{
	//私有构造方法,其他类不能访问构造方法
	private Demo(){
		
	}
	//创建本类对象
	private static Demo d  = new Demo();
	//对外提供公共的访问方法
	public static Demo getMyDemo(){   //获取实力
		return d;
	}
}

我们创建一个类是不是可以创建多个对象?
但是为了让符合要求只能在内存中创建一个对象
我先想到的是私有了构造方法
私有构造方法后就不能创建类对象了,同时
让其他类不能访问我们私有的方法
所以我们不能直接
new Demo () [创建对象]
那么我们怎么创建对象使用呢?
为了能使用这个类 我就想到了直接在自己的类里创建一个对象
并且私有这个对象 让其静态对象 但是可以类名·调用
然后在用get 方法 定义一个静态的公共的方法,这里其实是对外提供一个访问方法 我在return 返回一个d
这样我们就可以 Demo d = Demo.getMyDemo();

另一种方式

  1. 懒汉式单利又称单利延迟加载模式
class Demo {
	//私有构造方法,其他类不能访问构造方法
	private Demo(){
		
	}
	//声明一个引用
	private static Demo d;
	//对外提供公共的访问方法
	public static Demo getMyDemo(){    //获取实力
		if (d==null) {
			//线程1  线程2 都会等待 最后会创建2个对象
			d = new B();
		}
		return d ;
	}
}

看2中方式视乎下面的懒汉式会比饿汉式好 但是多线程执行懒汉式会创建多个对象 学过Runtime 类 研究过底层源码就可以知道是使用饿汉式实现的
他两的区别:
1.饿汉式是空间换时间,懒汉式是时间换空间
2.在多线程访问时,多线程访问不会创建多个对象,而懒汉式可能会创建多个对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废弃的root

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值