4、抽象工厂模式

抽象工厂模式实际就是工厂方法模式的再改进,我们先简单聊聊工厂方法模式:

工厂方法模式将工厂抽象,实现多种工厂,每种工厂负责生产一种产生,其中所有产生都属于同一类。也就是说工厂方法模式虽然包含多个工厂,但同时只能生产一类商品。对应到 Java 代码就是,抽象工厂模式只能生产某个父类或抽象接口下的所有对象。

为了解决工厂方法模式只能生产一类商品,提出抽象工厂模式:

public class AbstractFactory {

    public interface ProductA {
    }

    public static class ProductA1 implements ProductA {
        public ProductA1() {
            System.out.println("ProductA1 - 被生产");
        }
    }

    public static class ProductA2 implements ProductA {
        public ProductA2() {
            System.out.println("ProductA2 - 被生产");
        }
    }
    public interface ProductB {
    }

    public static class ProductB1 implements ProductB {
        public ProductB1() {
            System.out.println("ProductB1 - 被生产");
        }
    }

    public static class ProductB2 implements ProductB {
        public ProductB2() {
            System.out.println("ProductB2 - 被生产");
        }
    }

    public interface Factory {
        public ProductA createProductA();
        public ProductB createProductB();
    }

    public static class FactoryA implements Factory {

        @Override
        public ProductA createProductA() {
            return new ProductA1();
        }

        @Override
        public ProductB createProductB() {
            return new ProductB1();
        }
    }

    public static class FactoryB implements Factory {

        @Override
        public ProductA createProductA() {
            return new ProductA2();
        }

        @Override
        public ProductB createProductB() {
            return new ProductB2();
        }
    }

}

如上就是抽象工厂模式的代码结构,相比工厂方法模式,它具有以下优点:

  1. 工厂可以生产多种不同类商品
  2. 对于客户端来说,获得某工厂类后,可以获得该族所有产品
  3. 工厂和商品的一对一绑定关系断开,不在需要为每一类商品单独创建工厂类,可扩展性更强
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值