二、工厂方法

来源:互联网 发布:淘宝弹幕代码 编辑:程序博客网 时间:2024/05/30 23:00

1.简介定义

  1. 模式简介

    创建型设计模式,核心角色有四种

    • 抽象工厂
    • 具体工厂(实现抽象工厂)
    • 抽象产品
    • 具体产品(实现抽象产品)
  2. 定义

    定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。(百度百科)

  3. 类图
    这里写图片描述


2.代码实现

抽象产品

public interface IProduct {    void start();    void stop();}

具体产品

public class ProductType1 implements IProduct {    @Override    public void start() {        System.out.println("product one... start");    }    @Override    public void stop() {        System.out.println("product one... stop");    }}public class ProductType2 implements IProduct {    @Override    public void start() {        System.out.println("product two start***");    }    @Override    public void stop() {        System.out.println("product two stop***");    }}

抽象工厂

public interface IFactory {    IProduct createProduct();}

具体工厂

public class FactoryType1 implements IFactory {    @Override    public IProduct createProduct() {        return new ProductType1();    }}public class FactoryType2 implements IFactory {    @Override    public IProduct createProduct() {        return new ProductType2();    }}

客户端调用

public class ClientTest {    public static void main(String[] args) {        IFactory iFactory = new FactoryType1();        IProduct iProduct = iFactory.createProduct();        iProduct.start();        iProduct.stop();        iFactory = new FactoryType2();        iProduct = iFactory.createProduct();        iProduct.start();        iProduct.stop();    }}

3.总结

  1. 工厂方法是简单工厂方法的延伸,解决了简单工厂方法不符合开闭原则的问题,实现了对扩展开放。
  2. 区别于简单工厂模式,对工厂进行抽象,工厂类(具体)和产品类(具体)可以依次对应。具体的工厂去生产具体的对应的产品。
  3. 缺点如果产品类巨多,就会产生巨多的工厂类,增加系统的复杂性。
原创粉丝点击