美文网首页
1 创建型之工厂方法模式

1 创建型之工厂方法模式

作者: Laken | 来源:发表于2018-11-20 15:33 被阅读0次

概念

定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类,又被称作虚拟构造器。

例子

定义一个工厂接口,里面定义创建产品的方法。可重载多个创建方法以便于根据方法的参数来决定所创建的具体产品对象。方法的返回类型最好为产品的基类型,以方便调用。然后定义具体工厂来实现工厂接口,不同的工厂创建不同的产品。

代码示例:

//工厂接口
interface BaseFactory{
    BaseProduct produce(ProductType type);
}
//黑色工厂,生产黑颜色的产品
public class BlackFactory implements  BaseFactory{
    public BaseProduct produce(ProductType type) {//ProductType为枚举类
        return new BlackProduct(type);//BlackProduct继承BaseProduct
    }
}
//白色工厂,生产白颜色的产品
public class WhiteFactory implements BaseFactory {
    public BaseProduct produce(ProductType type) {
        return new WhiteProduct(type);//WhiteProduct继承BaseProduct
    }
}


BaseFactoy bFactory = new BlackFactory();
BaseFactoy wFactory = new BlackFactory();
BaseProduct bp;
//生产黑色的苹果
bp = bFactory.produce(ProductType.APPLE);
//生产黑色的梨
bp = bFactory.produce(ProductType.PEAR);
//生产白色的苹果
bp = wFactory.produce(ProductType.APPLE);
//生产白色的梨
bp = wFactory.produce(ProductType.PEAR);

适用性

  • 类不能确定它必须创建的对象类是哪个
  • 类希望它的子类来确定所创建的对象

真实案例

相关文章

  • 设计模式[2]-工厂方法模式-Factory Method Pa

    1. 工厂方法模式简介 工厂方法模式(Factory Method Pattern)是创建型的设计模式,和简单工厂...

  • 设计模式(1) 工厂方法模式

    创建型模式 简单工厂模式 工厂方法模式IOC与工厂方法模式的结合泛型工厂委托工厂 创建型模式 创建型模式可以隔离客...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 设计模式[3]-抽象工厂模式-Abstract Factory

    1.抽象工厂模式介绍 抽象工厂模式是创建型设计模式,可以创建一组对象。与工厂方法模式相比,抽象工厂模式中的具体工厂...

  • 设计模式-工厂方法模式

    1 工厂方法模式介绍 工厂方法模式(Factory Pattern)是创建型设计模式之一。工厂方法模式是一种结构简...

  • iOS 设计模式-工厂方法模式

    1.工厂方法模式简介 工厂方法模式(Factory Pattern),是创建型设计模式之一。工厂方法也称为虚构造器...

  • 设计模式、第一篇

    常用设计模式 设计模式分类 1.创建型 工厂方法模式(Factory Method)、抽象工厂模式(Abstrac...

  • 二十三种设计模式

    参考地址 一、创建型 1、单例模式 2、简单工厂 3、抽象工厂 4、工厂方法模式 5、模版方法模式 知道名字的模式...

  • Kotlin(八)kotlin设计模式-创建型

    创建型模式 - 工厂 Kotlin里面几种主流创建型设计模式:工厂方法模式,抽象工厂模式,构建者模式 8.1 伴生...

  • 设计模式——工厂方法模式

    1.工厂方法模式介绍 工厂方法模式(Factory Pattern)属于创建型设计模式。结构简单,平时开发中应用广...

网友评论

      本文标题:1 创建型之工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/mlvofqtx.html