java 静态工厂_Java什么是静态工厂方法?

小编典典

该静态工厂方法模式是一种封装对象的创建。如果没有工厂方法,则只需直接调用类的构造函数:Foo x = new Foo()。使用这种模式,你可以改为调用factory方法: Foo x = Foo.create()。构造函数被标记为私有,因此只能从类内部调用它们,并且将工厂方法标记为,static以便无需首先具有对象就可以对其进行调用。

这种模式有一些优点。一种是工厂可以从许多子类(或接口的实现者)中进行选择并返回。这样,调用者可以通过参数指定所需的行为,而不必了解或理解潜在的复杂类层次结构。

正如Matthew和James指出的那样,另一个优势是控制对有限资源(例如连接)的访问。这是一种实现可重用对象池的方法-而不是构建,使用和拆除对象,如果构建和销毁是昂贵的过程,则一次构建并回收它们可能更有意义。工厂方法可以返回一个现有的,未使用的实例化对象(如果有),或者如果对象计数低于某个下限阈值则构造一个实例,或者如果该对象null高于上限阈值则抛出异常或返回。

根据Wikipedia上的文章,多种工厂方法还允许对类似参数类型进行不同的解释。通常,构造函数与类具有相同的名称,这意味着你只能有一个具有给定签名的构造函数。工厂并不是那么受约束,这意味着你可以有两种接受相同参数类型的不同方法:

Coordinate c = Coordinate.createFromCartesian(double x, double y)

Coordinate c = Coordinate.createFromPolar(double distance, double angle)

正如Rasmus指出的那样,这也可以用来提高可读性。

2020-02-29

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值