【发布时间】:2021-04-03 10:24:52
【问题描述】:
我使用 Spring 框架在 Java 中编程。 但是我有一个关于设计模式的问题。
我有一个包含 3 个部分、3 个“大”部分的 X 类: 一种 乙 C
class X {
private A a;
private B b;
private C c;
// getters and setters
}
我为这个类创建了一个工厂,其中包含 3 个大私有方法来构造 X 类型对象的 3 个部分。
@Service
class XFactoryImpl implements XFactory {
@Override
X createX(InputData inputData) {
X x = new X();
x.setA(createA(inputData);
x.setB(createB(inputData);
x.setC(createC(inputData);
return x;
}
private A createA(InputData inputData) {
A a = new A();
// lot of code lines
return a;
}
private B createB(InputData inputData) {
B b = new B();
// lot of code lines
return b;
}
private C createC(InputData inputData) {
C c = new C();
// lot of code lines
return c;
}
}
问题如下: 由于 3 个私有方法 createA、createB 和 createC 是大方法, 工厂实现类很大。
一种解决方案可能是创建 3 个“子工厂”并将这 3 个子工厂注入到类 FactoryX 中,一个用于 A 类对象,一个用于 B 类对象,一个用于 C 对象。
但是类 A 在类 X 之外没有任何意义:A 是类 X 对象的类型属性所必需的。 B 类和 C 类的同上。
我 愿意 不 想要 创造 > 一个 工厂 用于 对象 属于 类 一个 没有 链接 这个 工厂 到 工厂 X X级,和 特别是 禁止 召唤 这个 factoryA 外部 来自 the factoryX (因为调用这个 FactoryA NOT 来创建类 X 的对象绝对没有意义,没有意义,因为 A 在我的项目中只是一种类型X 类的属性)。
我想禁止在 FactoryX 类之外注入 FactoryAImpl 实例,但我现在找不到解决方案。
如果 我 创建 一个 工厂 为 类 A,是 它 可能 到 链接 它 绝对 与 类 X ? 如果 是, 如何 请 ? 如果 不是, 哪个 设计 图案 可以 我 使用 ?
提前谢谢你,
托马斯
【问题讨论】:
标签: java spring design-patterns factory-pattern