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

本文详细解析了抽象工厂模式与工厂方法模式的概念、实现方式,并深入探讨了两者之间的区别,包括如何通过创建不同等级结构的产品来区分它们。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念 

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

// 产品 Plant接口    
public interface Plant { }//标志接口  
//具体产品PlantA,PlantB    
public class PlantA implements Plant {    
  
 public PlantA () {    
  System.out.println("create PlantA !");    
 }    
  
 public void doSomething() {    
  System.out.println(" PlantA do something ...");    
 }    
}    
public class PlantB implements Plant {    
 public PlantB () {    
  System.out.println("create PlantB !");    
 }    
  
 public void doSomething() {    
  System.out.println(" PlantB do something ...");    
 }    
}    
// 产品 Fruit接口    
public interface Fruit { }    
//具体产品FruitA,FruitB    
public class FruitA implements Fruit {    
 public FruitA() {    
  System.out.println("create FruitA !");    
 }    
 public void doSomething() {    
  System.out.println(" FruitA do something ...");    
 }    
}    
public class FruitB implements Fruit {    
 public FruitB() {    
  System.out.println("create FruitB !");    
 }    
 public void doSomething() {    
  System.out.println(" FruitB do something ...");    
 }    
}    
// 抽象工厂方法    
public interface AbstractFactory {    
 public Plant createPlant();    
 public Fruit createFruit();    
}    
//具体工厂方法    
public class FactoryA implements AbstractFactory {    
 public Plant createPlant() {    
  return new PlantA();    
 }    
 public Fruit createFruit() {    
  return new FruitA();    
 }    
}    
public class FactoryB implements AbstractFactory {    
 public Plant createPlant() {    
  return new PlantB();    
 }    
 public Fruit createFruit() {    
  return new FruitB();    
 }    
}   

//调用工厂方法   
public Client {   
      public method1() {   
             AbstractFactory instance = new FactoryA();   
             instance.createPlant();   
       }   
}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值