创建同一”类别“下的对象-抽象工厂模式

抽象工厂模式看起来与工厂方法模式相似,但工厂方法模式构建的是继承同一抽象类的对象,而抽象工厂模式创建出的对象并不是继承于同一基类的,所以,我们无法使用工厂方法模式那样的反射来创建对象

抽象工厂模式的类主要分为四类,分别是:抽象工厂类、具体工厂类、抽象产品类、具体产品类。

与工厂方法模式不同的地方是工厂方法模式的抽象产品类和具体工厂类只有一个,而抽象工厂模式的抽象产品类可能有许多个,具体工厂类也可能有许多个,其相当于每个产品都有不同的组件据称

抽象产品类
public abstract class AbstractPartA {
    public abstract void statement();
}
public abstract class AbstractPartB {
    public abstract void statement();
}
具体产品类
public class PartA1 extends AbstractPartA {
    @Override
    public void statement() {
        System.out.println("PartA1");
    }
}
public class PartA2 extends AbstractPartA {
    @Override
    public void statement() {
        System.out.println("PartA2");
    }
}
public class PartB1 extends AbstractPartB {
    @Override
    public void statement() {
        System.out.println("PartB1");
    }
}
public class PartB2 extends AbstractPartB {
    @Override
    public void statement() {
        System.out.println("PartB2");
    }
}

这里的具体产品类类似于一个产品的部件有很多的等级,A与B是两个不同的部件,而A1和A2则代表了两个不同的等级,可以假设这里的A1要比A2好一点,贵一些

抽象工厂类
public abstract class AbstractFactory {
    public abstract AbstractPartA createPartA();
    public abstract AbstractPartB createPartB();
}
具体工厂类

具体工厂类类似于上面各种具体产品的组合

public class ProductFactoryOne extends AbstractFactory {
    @Override
    public AbstractPartA createPartA() {
        return new PartA1();
    }

    @Override
    public AbstractPartB createPartB() {
        return new PartB2();
    }
}
public class ProductFactoryTwo extends AbstractFactory {
    @Override
    public AbstractPartA createPartA() {
        return new PartA2();
    }

    @Override
    public AbstractPartB createPartB() {
        return new PartB2();
    }
}
当然,这里的组合方式不知这两种,应该有四种,这里就不一一列举出来了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值