Java 工厂方法模式的简单示例

工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象。

目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象。

工厂方法模式包含四个部分:

1.抽象产品:产品对象同一的基类,或者是同一的接口。

2.具体的产品:各个不同的实例对象类

3.抽象工厂:所有的子类工厂类的基类,或是同一的接口

4.具体的工厂子类:负责每个不同的产品对象的实际创建

具体代码示例,我们以买水果作为演示。

定义买的接口:

public interface IFrutis {
    void buy();
}

定义两个实现接口的类:

public class Banana implements  IFrutis{
    @Override
    public void buy() {
        System.out.println("欢迎来买香蕉");
    }
}

 抽象的工厂接口:

public interface IFruitFactory {
    IFrutis createFactory();
}

具体工厂子类:

public class BananaFactory implements IFruitFactory {
    @Override
    public IFrutis createFactory() {
        return new Banana();
    }
}
public class AppleFactory implements IFruitFactory {
    @Override
    public IFrutis createFactory() {
        return new Apple();
    }
}

测试:

public class StudentTest {
    public static void main(String[] args) {
        //根据 需求的水果 生成 实体工厂
        //创建香蕉工厂
        IFruitFactory iFruitFactory = new BananaFactory();
        //实体工厂
        IFrutis banana = iFruitFactory.createFactory();
        banana.buy();

        IFruitFactory iFruitFactory1 = new AppleFactory();
        IFrutis factory = iFruitFactory1.createFactory();
        factory.buy();

    }
}

结果:

1 欢迎来买香蕉
2 欢迎来买苹果

工厂方法模式,是最标准的一种工厂模式,也是应用广泛的一种模式。 But 工厂模式有一个很大的缺点:

  • 就是,如果增加了一款产品,比如是Lenovo 那么你就需要为lenovo创建一个工厂类。
  • 一个具体工厂只能创建一种具体产品。
  • 系统类的个数将成对增加,在一定程度上增加了系统的复杂度;同时,有更多的类需要编译和运行,会给系统带来一些额外的开销。

代码示例地址:https://github.com/oukele/methodFactory

原文地址:https://www.cnblogs.com/oukele/p/10097046.html