【发布时间】:2016-11-23 07:25:59
【问题描述】:
想知道java中可能的设计模式方法的输入:
场景:尝试为对象和值对的组合创建一个数组列表。 如果对象有 A、B、C...等 如果值有 X1, X2, X3...等
对于 A 和 X1 的组合,可能有一个 Y1 的数组列表 对于 A 和 X2 的组合,可能有一个 Y2 的数组列表 .....等等,等等等等。
我尝试使用 Factory Creational Design Pattern,但匹配得不太好。有人可以为这个问题提出一种可能的设计方法吗?
我无法在我的实现中使用 Apache Pair。好的,我已经添加了我的问题 Java 类代码:
import java.util.ArrayList;
import java.util.List;
public class FieldsProvider2 {
private MyObject object;
private MyAction action;
public FieldsProvider2(MyObject object, MyAction action) {
this.object = object;
this.action = action;
}
public List<Object> getList() {
if ((action != null && object != null)) {
if (Action.A == action) {
List<Object> fields = new ArrayList<>();
if (object.getTypeKey().equals(MYObject.X1)) {
// fields.add(Y1);
// fields.add(Y2);
// fields.add(Y3);
// fields.add(Y4);
// fields.add(Y5);
// fields.add(Y5);
// fields.add(Y6);
// fields.add(Y7);
return fields;
}
if (object.getTypeKey().equals(MYObject.X2)) {
// nothing
}
if (object.getTypeKey().equals(MYObject.X3)) {
// fields.add(Y1);
}
if (object.getTypeKey().equals(MYObject.X4)) {
// fields.add(Y1);
// fields.add(Y8);
// fields.add(Y9);
}
if (object.getTypeKey().equals(MYObject.X5)) {
// fields.add(Y1);
}
if (object.getTypeKey().equals(MYObject.X6)) {
// fields.add(Y1);
}
if (object.getTypeKey().equals(MYObject.X7)) {
// fields.add(Y1);
}
if (object.getTypeKey().equals(MYObject.X8)) {
// fields.add(Y1);
}
if (object.getTypeKey().equals(MYObject.X9)) {
// fields.add(Y9);
}
if (object.getTypeKey().equals(MYObject.X10)) {
// fields.add(Y10);
}
// Common items
// fields.add(Y11);
// fields.add(Y12);
// fields.add(Y13);
// fields.add(Y14);
// or
// fields.add(Y15);
return fields;
}
if (Action.B == action) {
List<Object> fields = new ArrayList<>();
if (object.getTypeKey().equals(MYObject.X1)) {
// fields.add(Y1);
// fields.add(Y2);
// fields.add(Y3);
// fields.add(Y4);
// fields.add(Y5);
// fields.add(Y5);
// fields.add(Y6);
// fields.add(Y7);
return fields;
}
if (object.getTypeKey().equals(MYObject.X2)) {
// fields.add(Y7);
}
}
//Action.C will start
//Action.D will start and so on...
return null;
}
}
【问题讨论】:
-
请解释更多或写下您在尝试实现此目的期间编写的代码。我无法理解您的问题。
-
设计模式是针对某些工作流程的解决方案,而不是针对数据结构的解决方案(尽管该解决方案可能会使用某些数据结构)。所以我认为你在这里走错了路。
-
只需创建一个包含所有所需功能的 API。就像一个需要全套操作的代数。然后最好的数据结构会自动适应。
-
您的问题是有道理的,它是一个完全有效的寻求帮助的请求,但它似乎更多的是关于设计而不是编码。它可能更适合:Programmers.
-
设计模式只是“良好实践”。这不是你必须在你的类设计中包含的东西,地狱或高水位。如果您有想用设计模式解决的问题,请描述它。 (例如“我希望我的班级不依赖于特定的数据存储方式...”)
标签: java design-patterns