设计模式-创建型 - 抽象工厂(Abstract Factory)

步骤1: 创建抽象工厂类,定义具体工厂的公共接口;

 /**
  * @抽象工厂类
  */
abstract class Factory{
    public abstract AbstractProduct manufactureContainer();
    public abstract AbstractProduct manufactureMould();
}

步骤2: 创建抽象产品族类 ,定义抽象产品的公共接口;

/**
 * @抽象产品类
 */
abstract class AbstractProduct{
    public abstract void Show();
}

步骤3: 创建抽象产品类 (继承抽象产品族类),定义具体产品的公共接口;

//容器产品抽象类
abstract class ContainerProduct extends AbstractProduct {
    @Override
    public abstract void Show();
}

//模具产品抽象类
abstract class MouldProduct extends AbstractProduct {
    @Override
    public abstract void Show();
}

步骤4: 创建具体产品类(继承抽象产品类) & 定义生产的具体产品;

 class ContainerProductA extends ContainerProduct {
    @Override
    public void Show() {
        System.out.println("ContainerProductA");
    }
}

class ContainerProductB extends ContainerProduct {
    @Override
    public void Show() {
        System.out.println("ContainerProductB");
    }
}

 class ContainerProductA extends ContainerProduct {
    @Override
    public void Show() {
        System.out.println("ContainerProductA");
    }
}

class ContainerProductB extends ContainerProduct {
    @Override
    public void Show() {
        System.out.println("ContainerProductB");
    }
}

步骤5:创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法;

//A厂 - 生产模具+容器产品
class FactoryA extends Factory{

    @Override
    public AbstractProduct manufactureContainer() {
        return new ContainerProductA();
    }

    @Override
    public AbstractProduct manufactureMould() {
        return new MouldProductA();
    }
}

//B厂 - 生产模具+容器产品
class FactoryB extends Factory{

    @Override
    public AbstractProduct manufactureContainer() {
        return new ContainerProductB();
    }

    @Override
    public AbstractProduct manufactureMould() {
        return new MouldProductB();
    }
}

步骤6:客户端通过实例化具体的工厂类,并调用其创建不同目标产品的方法创建不同具体产品类的实例


//生产工作流程
public class AbstractFactoryPattern {
    public static void main(String[] args){
        FactoryA mFactoryA = new FactoryA();
        FactoryB mFactoryB = new FactoryB();
        //A厂当地客户需要容器产品A
        mFactoryA.manufactureContainer().Show();
        //A厂当地客户需要模具产品A
        mFactoryA.manufactureMould().Show();

        //B厂当地客户需要容器产品B
        mFactoryB.manufactureContainer().Show();
        //B厂当地客户需要模具产品B
        mFactoryB.manufactureMould().Show();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值