前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工厂方法模式(Factory Method)

工厂方法模式(Factory Method)

作者头像
qubianzhong
发布2019-07-01 17:34:26
4290
发布2019-07-01 17:34:26
举报
文章被收录于专栏:行者常至行者常至

工厂方法模式(Factory Method)

定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
类图:
这里写图片描述
这里写图片描述
1.很多工厂都有一些相同的行为,比如汽车工厂。我们需要抽象这些相同的行为成接口,每个工厂都实现这个接口。
public interface IFactory {

    public void createProduct();
}
2.生产相同的产品每个工厂所使用的方法可能不同,所以具体如何生产产品由具体工厂实现。
public class Factory implements IFactory {

    @Override
    public void createProduct() {

    }
}

工厂方法模式(Factory Method)–总结

工厂模式两要点:
  • 1.工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。
  • 2.工厂实现决定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。
适用场景:
  • 1.在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。
  • 2.工厂模式是一种典型的解耦模式,迪米特法则在工厂模式中表现的尤为明显。假如调用者自己组装产品需要增加依赖关系时,可以考虑使用工厂模式。将会大大降低对象之间的耦合度。
  • 3.当需要系统有比较好的扩展性时,可以考虑工厂模式,不同的产品用不同的实现工厂来组装。

Test:

package com.qbz.test;

//汽车工厂
interface CarFactory {
    void productCar();
}

// 保时捷工厂
class PorscheFactory implements CarFactory {
    @Override
    public void productCar() {
        System.out.println("生产保时捷汽车");
    }
}

// 拖拉机工厂
class TractorFactory implements CarFactory {
    @Override
    public void productCar() {
        System.out.println("生产拖拉机");
    }
}

// 奔驰汽车工厂
class BenzFactory implements CarFactory {
    @Override
    public void productCar() {
        System.out.println("生产奔驰汽车");
    }
}

public class FactoryMethod {

    public static void main(String[] args) {
        // 保时捷工厂生产保时捷
        CarFactory pf = new PorscheFactory();
        pf.productCar();
        // 拖拉机工厂生产拖拉机
        CarFactory tf = new TractorFactory();
        tf.productCar();
        // 奔驰工厂生产奔驰
        CarFactory bf = new BenzFactory();
        bf.productCar();
    }

}
输出:
生产保时捷汽车
生产拖拉机
生产奔驰汽车
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年08月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工厂方法模式(Factory Method)
    • 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
      • 类图:
        • 1.很多工厂都有一些相同的行为,比如汽车工厂。我们需要抽象这些相同的行为成接口,每个工厂都实现这个接口。
          • 2.生产相同的产品每个工厂所使用的方法可能不同,所以具体如何生产产品由具体工厂实现。
          • 工厂方法模式(Factory Method)–总结
            • 工厂模式两要点:
              • 适用场景:
              • Test:
                • 输出:
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档