`
yeaijun
  • 浏览: 19552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

设计模式-抽象工厂模式

阅读更多

1.概念 
《设计模式》一书中对于抽象工厂模式是这样定义的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 

2、示例 

Java代码 
  1. // 产品 Plant接口      
  2. public interface Plant { }//标志接口    
  3. //具体产品PlantA,PlantB      
  4. public class PlantA implements Plant {      
  5.     
  6.  public PlantA () {      
  7.   System.out.println("create PlantA !");      
  8.  }      
  9.     
  10.  public void doSomething() {      
  11.   System.out.println(" PlantA do something ...");      
  12.  }      
  13. }      
  14. public class PlantB implements Plant {      
  15.  public PlantB () {      
  16.   System.out.println("create PlantB !");      
  17.  }      
  18.     
  19.  public void doSomething() {      
  20.   System.out.println(" PlantB do something ...");      
  21.  }      
  22. }      
  23. // 产品 Fruit接口      
  24. public interface Fruit { }      
  25. //具体产品FruitA,FruitB      
  26. public class FruitA implements Fruit {      
  27.  public FruitA() {      
  28.   System.out.println("create FruitA !");      
  29.  }      
  30.  public void doSomething() {      
  31.   System.out.println(" FruitA do something ...");      
  32.  }      
  33. }      
  34. public class FruitB implements Fruit {      
  35.  public FruitB() {      
  36.   System.out.println("create FruitB !");      
  37.  }      
  38.  public void doSomething() {      
  39.   System.out.println(" FruitB do something ...");      
  40.  }      
  41. }      
  42. // 抽象工厂方法      
  43. public interface AbstractFactory {      
  44.  public Plant createPlant();      
  45.  public Fruit createFruit();      
  46. }      
  47. //具体工厂方法      
  48. public class FactoryA implements AbstractFactory {      
  49.  public Plant createPlant() {      
  50.   return new PlantA();      
  51.  }      
  52.  public Fruit createFruit() {      
  53.   return new FruitA();      
  54.  }      
  55. }      
  56. public class FactoryB implements AbstractFactory {      
  57.  public Plant createPlant() {      
  58.   return new PlantB();      
  59.  }      
  60.  public Fruit createFruit() {      
  61.   return new FruitB();      
  62.  }      
  63. }     

Java代码 
  1. //调用工厂方法     
  2. public Client {     
  3.       public method1() {     
  4.              AbstractFactory instance = new FactoryA();     
  5.              instance.createPlant();     
  6.        }     
  7. }  


3、抽象工厂模式与工厂方法模式的区别 
可以这么说,工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。 
(1)、其实工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。工厂方法创建一般只有一个方法,创建一种产品。抽象工厂一般有多个方法,创建一系列产品。 
(2)、工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 

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

分享到:
评论

相关推荐

    设计模式 - 抽象工厂模式

    设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...

    java常用设计模式-抽象工厂模式

    java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    java设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...

    设计模式-抽象工厂模式javademo

    抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...

    05_C_设计模式-抽象工厂模式

    他是一种模式,计算机软件开发的一种模式,可以兼容多个数据库,以及数据库之间交互

    PHP5设计模式-抽象工厂模式实现

    PHP实现的抽象工厂模式,大家可以下载来参考学习下。

    3.设计模式-抽象工厂模式1

    抽象工厂模式是一种设计模式,属于创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在Java编程中,这种模式可以帮助我们隔离具体类和抽象类之间的耦合,使得系统对扩展友好,...

    Java设计模式教程 - Java设计模式 - 抽象工厂模式

    抽象工厂模式是Java设计模式中的一种创建型模式,它提供了创建对象族的接口,而具体的对象族由子类决定。这种模式的主要目的是隔离接口与实现,使得客户端代码在更换产品族时无需修改,增强了软件的可扩展性和可维护...

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    设计模式--抽象工厂模式实现多数据库连接

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...

    设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

    设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    从哲学角度学习设计模式-抽象工厂

    总的来说,"从哲学角度学习设计模式-抽象工厂"这个主题旨在将哲学思考融入到软件设计中,通过抽象工厂模式,我们不仅可以理解如何构建灵活、可扩展的系统,还能体会到哲学思想如何影响并指导我们的编程实践。...

    设计模式--抽象工厂

    抽象工厂模式通常由以下几个角色构成: 1. **抽象工厂(Abstract Factory)**:定义一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在不同的实现中,这个接口会创建出不同系列的产品。 2. **...

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...

    Java设计模式-抽象工厂

    抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这个模式使代码能够独立于实际的产品实现,增强了代码的可扩展性和灵活性。 ### **1. 模式概念** 抽象...

    c++设计模式-抽象工厂方法

    在C++中,抽象工厂模式通常包含以下角色: 1. **抽象工厂(Abstract Factory)**:定义一个创建对象的接口,但不指定具体的实现。在C++中,这通常是一个纯虚类,声明了一系列用于创建对象的纯虚函数。 2. **具体工厂...

Global site tag (gtag.js) - Google Analytics