对java单态模式应用场景的浅显理解

概述:

        实际生活中单态模式的应用场景有挺多的,比如windows的任务管理器、回收站、网站的计数器、应用程序的日志应用。

那么存在什么需求时会使用单态模式?答案是在我们仅创建类的一个实例成为我们的最优选择时,例如1、网站的计数器,如果我们创建了多个实例,那么我们难以同步网站的计数情况;2、windows的回收站,多个实例很不方便维护....我们选择让像同类的实力指向同一个内存区。那么怎么去实现这个单态模式呢?下面来重点阐述:

单态模式的实现:

           1、首先我们要明确我们最终要得到的是什么,假设这个类名为Main,我们最后调用的方式不再是通过Main m1  = new Main();而是通过Main m1 = Main.x1()://x1为一个静态的方法名;

            2、然后我们为了实现单态需要保证什么?我们要保证无法从外部来new得到一个新的实例,我们的实例必须是单一的,

所以我们的构造函数必须要被私有化;

             3、接下来我们就可以写代码了:

package com.zn.SingletonPattern;

public class Main {
	int value;
	private static Main instance;//创建一个私有的静态变量
	private Main() {
		System.out.println("正在执行构造器");
	}//private保证了私有化,在类外部无法使用new方法来创建实例
	
	//提供静态方法返回该类的实例,这个方法保证了实例只能存在一个
	public static Main getInstance() {
		if(null == instance) {
			instance = new Main();//如果之前不存在已创建的instance,那么new 一个Main并返回
		}
		return instance;
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}
	
	public static void main(String[] args) {
		Main t1 = Main.getInstance();
		Main t2 = Main.getInstance();
		t1.setValue(9);
		System.out.println(t1 == t2);
	}
}

输出是:正在执行构造器
               true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值