Java中级篇之静态工厂方法代替构造器

这里的静态工厂方法并不是设计模式中的工厂方法,只是类中的一个静态方法,这个方法的主要作用就是通过调用类的构造器来返回类的实例。
这样做有以下几个优势:
第一大优势:它们有名称
如果希望一个类能通过不同的参数来实例化,那么用公有构造器只能通过构造器的重载来实现,这样在实例化的时候就需要谨慎仔细的鉴别输入参数。如果使用静态工厂方法的话,就可以在方法名称上加以区分,方便使用。

public class A{
	private Stirng a;
	private A(String a){this.a=a;}
	public static A getInstance(String a){return new A(a);}
}

第二大优势:不必在每次调用它们的时候都创建新对象
这要根据具体的需求来实现,比如在单例模式中,调用静态工厂方法时,如果该对象已经存在则返回该对象的引用,如果该对象不存在则创建对象实例并返回。

public class Singleton{
	private static Singleton singleton;
	private Singleton(){}
	public static Singleton getInstance(){
		if(singleton==null){singleton=new Singleton();}
		return singleton;
	}
}

第三大优势:他们可以返回原返回类型的任何子类对象
这个可以理解为父类类型指向子类对象,这种灵活性的一个应用就是:API可以返回对象,同时有不会使对象的类型变成公有的,隐藏了实现类可以让API变得非

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值