class的访问权限+单例模式

本文探讨了Java中如何通过将构造方法设为私有来阻止类的实例化,并介绍了两种使用方法:通过静态工厂方法创建对象和利用单例模式确保类仅有一个实例。

class只有两种访问权限(内部类除外):package access和public。如果不想其他任何人对该类拥有访问权限,可以把所有构造方法指定为private,阻止其创建该类的对象。但有一个例外,就是可以在该类的static成员内部创建对象。

class Soup1{
  private Soup1() {}
  public static Soup1 makeSoup(){
    return new Soup1();
  }
}

class Soup2{
	private Soup2(){}
	//Singleton pattern
	private static Soup2 ps1=new Soup2();
	public static Soup2 access(){
		return ps1;
	}
	public void f(){}
}

public class Lunch {
	void testPrivate(){
		//cant't do this
		// ! Soup1 soup=new Soup1();
	}
	void testStatic(){
		Soup1 soup=Soup1.makeSoup();
	}
	void testSinleton(){
		Soup2.access().f();
	}
}

 Soup1和Soup2两个类通过把构造方法设置为private来阻止直接创建类的实例。那么如何使用这些类呢。本例给出

了两种方式。

在Soup1中,创建了一个static方法,它创建了一个新的Soup1对象并返回一个对它的引用。Soup2用到了单例模式,始终只能创建它的一个对象;Soup2类的对象是作为Soup2的一个static private成员而创建的,所以有且只有一个(单例),除非是通过public方法access(),否则是无法访问到它的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值