0%

设计模式之构建型模式(二):抽象工厂模式

1. 抽象工厂模式概述

  • 概念

    • 进一步优化工厂方法模式,提取出公共的工厂接口
  • 优点

    • 由于客户端只和 IFactory 打交道了,调用的是接口中的方法,使用时根本不需要知道是在哪个具体工厂中实现的这些方法,这就使得替换工厂变得非常容易
    • 实际上抽象工厂模式主要用于替换一系列方法,IFactory 中只有一个抽象方法时抽象工厂模式的优势还不明显。抽象工厂模式很好地发挥了开闭原则依赖倒置原则
  • 缺点

    • 抽象工厂模式太重了,如果 IFactory 接口需要新增功能,则会影响到所有的具体工厂类
    • 抽象工厂模式适用于增加同类工厂这样的横向扩展需求,不适合新增功能这样的纵向扩展
  • Demo

    • 公共的工厂接口

      1
      2
      3
      public interface IFactory {
      Fruit create();
      }
    • 实现接口的苹果工厂

      1
      2
      3
      4
      5
      6
      public class AppleFactory implements IFactory {
      @Override
      public Fruit create(){
      return new Apple();
      }
      }
    • 调用者

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      public class User {
      private void eat(){
      IFactory appleFactory = new AppleFactory();
      Fruit apple = appleFactory.create();
      IFactory pearFactory = new PearFactory();
      Fruit pear = pearFactory.create();
      apple.eat();
      pear.eat();
      }
      }
-------------------- 本文结束感谢您的阅读 --------------------