Java设计模式之单例模式(理解+代码)

设计模式

设计模式是对问题行之有效的解决方式,是一种思想。
以单例模式为例:

  • 单例模式
    解决的问题:保证一个类在内存中的对象唯一性。
    如何保证对象的唯一性呢?
    1.不允许其他程序用new创建该类对象。
    2.在该类创建一个本类实例。
    3.对外提供一个方法让其他程序可以获取该对象。

    步骤:
    1.私有化该类构造函数。
    2.通过new在本类中创建一个本类对象。
    3.定义一个公有的方法,将创建的对象返回。

以下代码对比了单例模式下和普通情况下,实例的区别。可以明显的看到,单例模式下,即使有不同对象,他们共享的配置信息是一样的。

public class SinglePatternDemo {//单例模式测试

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		NormalObject object1 = new NormalObject();
		NormalObject object2 = new NormalObject();
		object1.setNum(10);
		object2.setNum(20);
		System.out.println("普通模式下的对象:");
		System.out.println("object1.num="+object1.getNum());
		System.out.println("object2.num="+object2.getNum());
		System.out.println("------------------------------");
		
		//不合法的构造函数
	    //编译时错误:构造函数 SingleObject() 是不可见的
	    //SingleObject s = new SingleObject();
		SingleObject s1 = SingleObject.getInstance();
		s1.setNum(10);
		System.out.println("单例模式下的对象:");
		System.out.println("s1.num="+s1.getNum());
		SingleObject s2 = SingleObject.getInstance();
		s2.setNum(20);
		System.out.println("s2.num="+s2.getNum());
		System.out.println("s1.num="+s1.getNum());

	}

}

class NormalObject{
	private int num;
	//private SingleObject() {}
	public void setNum(int num) {
		this.num = num;
	}
	public int getNum() {
		return num;
	}
}

class SingleObject{//单例模式只需要包含三个步骤
	private int num;
	//创建 SingleObject 的一个对象
	private static SingleObject s = new SingleObject();
	//让构造函数为 private,这样该类就不会被实例化
	private SingleObject() {}
	//获取唯一可用的对象
	public static SingleObject getInstance() {
		return s;
	}
	
	public void setNum(int num) {
		this.num = num;
	}
	public int getNum() {
		return num;
	}
}

在这里插入图片描述


其他模式用到了会持续更新。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值