[设计模式]--工厂方法

工厂方法

定义
  • 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。
  • 类型:创建型。
适用场景
  • 创建对象需要大量的重复代码。
  • 客户端(应用层)不依赖于产品类的实例如何被创建、实现等细节。
  • 一个类通过其子类来指定创建哪个对象。
优点
  • 用户只需要关心所需产品对应的工厂,而无需关心创建细节。
  • 加入新的产品符合开闭原则,提高可扩展性。
缺点
  • 类的个数容易过多,增加复杂度。
  • 增加了系统的抽象性和理解难度。
举例

工厂方法

工厂方法相对于简单工厂来说,将具体的创建产品的实现交给了原本工厂的一个个具体的子类,而子类只负责一族产品的创建,如果需要增加新的产品,则加上具体产品类和产品工厂类即可。


理解
JDK源码
我们先来看看这些源代码
// Collection
Iterator<E> iterator();

// ArrayList
public Iterator<E> iterator() {
        return new Itr();
}
private class Itr implements Iterator<E> {...}
这里的Collection相当于抽象工厂,而ArrayList是具体的实现工厂;Iterator相当于抽象产品类,Itr相当于具体的产品类。
对照什么的例子来说的话,Collection相当于VedioFactory,ArrayList相对于FEVedioFactory;Iterator相当于Vedio,Itr相当于FEVedio。  

有兴趣的小伙伴还可以看看URLStreamHandlerFactory和LoggerFactory

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值