JAVA基础:单例模型常用方式


/*单例模型
 *18.10.8
 *修改于:18.11.5
 *目的:让某一个类只有一个实例对象
 *步骤     1.让构造方法私有化
 *   重点:2.对外提供一个公共的获取当前类的对象的方法
 *        3.提供一个当前类型的静态变量
 *懒汉式:优点:节约内存    缺点:多线程在if语句中有缺陷,容易造成两个对象。
 *饿汉式:慢慢百度
 * 模型用法:任务管理器,回收站
 */
public class TestPerson_01 {
	public static void main(String[] args){
		PersonTest1 xiaowang=PersonTest1.getPersonTest1();
		PersonTest1 wangjie=PersonTest1.getPersonTest1();
		PersonTest1 dog=PersonTest1.getPersonTest1();
		System.out.println(xiaowang.name);
		System.out.println(wangjie.name);
		System.out.println(dog.name);
        //结果:输出全为wangyulin		
		PersonTest2 chongqing=PersonTest2.getPersonTest2();
		PersonTest2 beijing=PersonTest2.getPersonTest2();
		System.out.println(chongqing.country);
		System.out.println(beijing.country);
		//结果:输出全为china
	}
}

// 饿汉式 
class PersonTest1{
	String name;
	int age;
	String where;
	String sex;
	
	static PersonTest1 pt1=new PersonTest1();
	private PersonTest1(){
		this.name="wangyulin";
		this.age=20;
		this.where="rz";
		this.sex="boy";
	}
	//唯一对外实例化一个对象的入口
	//将唯一实例化对象pt1提供出去
	public static PersonTest1 getPersonTest1(){
		return pt1;
	}	
}
//懒汉式
class PersonTest2{
	String country;
	static PersonTest2 pt2=null;//注意对象必须为static
	private PersonTest2(){
		this.country="china";
	}
	public static PersonTest2 getPersonTest2(){
		if(pt2==null)
			pt2=new PersonTest2();
		return pt2;
	}
}

 

类加载简单说明:(来自http://www.cnblogs.com/chenweichu/p/7785096.html

在第一次创建一个类的对象或者第一次调用一个类的静态属性和方法的时候,会发生类加载

类加载期间,如果发现有静态属性,就给对应的静态属性分配内存空间,并赋值

这个过程完成之后,今后在调用该类的静态属性,虚拟机会直接寻找改属性先前已经分配的内存空间地址,然后调用其值。同样,修改这个类的静态属性也一样

说白了,静态属性将永远占用某一块固定的内存空间,直到程序终止
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值