设计模式——工厂方法模式(FactoryMethod)和抽象工厂模式(Abstract Factory)

来源:互联网 发布:日货清单 国人必知 编辑:程序博客网 时间:2024/06/06 00:33

工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory).

      这两个模式没有很明显的区别,区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,我们就可能要将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现。

下面关于是在网络中查到关于工厂方法模式与抽象工厂模式的概述和区别:

工厂方法模式:
      一个抽象产品类,可以派生出多个具体产品类。  
      一个抽象工厂类,可以派生出多个具体工厂类。  
      每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
      多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。  
      一个抽象工厂类,可以派生出多个具体工厂类。  
      每个具体工厂类可以创建多个具体产品类的实例。   
区别:
      工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。  
      工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

抽象工厂模式相比工厂方法模式要复杂一些,这里针对抽象工厂模举例说明。如果能够理解抽象工厂模式,工厂方法模式就很easy了。

      抽象产品角色:

  public interface Creator
  {

      public ProductA factoryA();

      public ProductB factoryB();

  }

  具体工厂类1:

  public class ConcreteCreator1 implements Creator

  {

         public ProductA factoryA()

         {

                return new ProductA1();

          }

         public ProductB factoryB()

        {

               return new ProductB1();

         }

  }

  具体工厂类2:

  public class ConcreteCreator2 implements Creator

  {

        public ProductA factoryA()

       {

              return new ProductA2();

        }

        public ProductB factoryB()

       {

             return new ProductB2();

       }

  }

  抽象产品类A:

  public interface ProductA

  {

  }

  抽象产品类B:

  public interface ProductB

  {

  }

  具体产品类ProdcutA1:

  public class ProductA1 implements ProductA

  {

        public ProductA1()

       {

       }

  }

  具体产品类ProdcutA2:

  public class ProductA2 implements ProductA

  {

        public ProductA2()

       {

       }

  }

  具体产品类ProdcutB1:

  public class ProductB1 implements ProductB

  {

         public ProductB1()

         {

         }

  }

  具体产品类ProdcutB2:

  public class ProductB2 implements ProductB

  {

          public ProductB2()

         {

          }

  }

我个人理解抽象工厂模式是工厂方法模式的扩充。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 主板没有m.2接口怎么办 点痣留下了疤怎么办 危险三角区长痘痘怎么办 挤了危险三角区怎么办 三角区长痘挤了怎么办 三角区发红长痘怎么办 激光祛斑碰水了怎么办 激光打痣留下坑怎么办 点痣之后留下坑怎么办 去痣留下的红印怎么办 激光点痦子留疤怎么办 激光点痣的疤痕怎么办 做完眉毛碰水了怎么办 脸上疤掉了有坑怎么办 结痂不小心抠掉怎么办 脸上肉松弛怎么办19岁 点痣留下来的疤怎么办 激光祛斑的红印怎么办 脸上疤掉了红印怎么办 痘痘发炎了红肿怎么办 脸上的斑越来越多了怎么办 点痣留下的疤痕怎么办 额头又高又大怎么办 脸太长额头太高怎么办 动车因台风停运怎么办 爸妈50了要离婚怎么办 鸿利彩票黑了钱怎么办 忘了锁屏图案怎么办 黄金被水银沾上怎么办 被股东了我该怎么办 异地恋没话题聊怎么办 谈了半年分手了怎么办 博士6年没毕业怎么办 发现孩子早恋家长应该怎么办 异地恋想嘿嘿嘿怎么办 妈妈溜冰溜大了怎么办 皮鞋被雨水泡了怎么办 老婆提出离婚我不想离怎么办 极度缺爱的人怎么办 生二胎住院大宝怎么办 爸妈偏心我该怎么办