java - Java中有没有一种简单的方法来组合工厂?

标签 java factory

假设我有工厂类 FactoryAFactoryB 的接口(interface),以及用于生成 AB 类型对象的方法> 分别,并假设我有这些接口(interface)的实现。现在假设我需要一个工厂类 FactoryAB 来实现两个接口(interface),即同时生成 AB。有没有一种简单的方法来组合接口(interface) FactoryAFactoryB 的实现来获得 FactoryAB

编辑: 这是因为一个类需要大量工厂来生产大量不同的对象。在这种情况下,在我看来,只拥有一个大型工厂来生产所有需要的组件,而不是跟踪许多小型工厂会更方便。

主要目标是不必编写太多代码来实现这一点。也许,其他一些模式更适合这种情况?

编辑2: 本质上,我希望摆脱臃肿的代码,例如:

public class Consumer {
 FactoryA factoryAImpl;
 FactoryB factoryBImpl;
 // ...
 FactoryY factoryYImpl;
 FactoryZ factoryZImpl;

 public Consumer(FactoryA factoryA, FactoryB factoryB, ..., FactoryZ factoryZ) {
   // ...
 }
 //...
}

拥有紧凑/简单的代码,例如:

public class Consumer {
 FactoryAtoZ factoryAtoZImpl;

 public Consumer(FactoryAtoZ factoryAtoZ) {
   // ...
 }
 //...
}

最佳答案

你可以用组合来做到这一点:

public class FactoryAB implements FactoryA, FactoryB
{
   FactoryA factoryAImpl = new FactoryAImplementor();
   FactoryB factoryBImpl = new FactoryBImplementor();

   public ObjectA getObjectA()  {
        return factoryAImpl.getObjectA();
   }

   public ObjectB getObjectB()  {
        return factoryBImpl.getObjectB();
   }
}

关于java - Java中有没有一种简单的方法来组合工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28418953/

相关文章:

java - Solr查询计算两点之间的地理距离

Javascript 创建具有 new 和不具有 new + 继承的对象

javascript - AngularJS:多个工厂实例任何原型(prototype)继承

php - 在哪里实现工厂方法?

c# - 这是接口(interface)的错误使用吗?

java - 嵌套循环构造

java - 除法时输出为零?

java - 在 java 中创建一个简单的 gui 来运行后台进程

java - 使用 MouseListener 开始或结束无限循环

javascript - 从工厂请求数据并将数据返回到同一工厂以在 Controller 之间共享