의 조합에 대한 ArrayList를을 만들 수 있습니다 :디자인 패턴은 자바에서 가능한 디자인 패턴 방식의 입력을 알고 싶어 객체와 값 쌍
시나리오 : 객체와 값 쌍의 조합에 대한 ArrayList를 만들려고. 객체가있는 경우 A, B, C ... 등 값 등 X1, X2, X3 ...를 갖는 경우
ArrayList를가 될 수있는 X1 & 의 조합 Y1의 ArrayList에있을 수 A & X2 ..... 등의 조합에 대해서는 Y2의 값을 갖는다.
나는 Factory Creational Design Pattern을 사용해 보았지만 꽤 좋지는 않았다. 아무도이 문제에 대한 가능한 설계 방법을 제안 할 수 있습니까?
구현시 Apache Pair를 사용할 수 없습니다. 확인 내가 추가 한 내 문제 자바 클래스 코드 :
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;
}
}
자세한 내용을 설명하거나 당신이 이것을 달성하기 위해 당신의 시도 중에 작성한 코드를 적어 주시기 바랍니다. 네 문제를 이해할 수 없어. –
디자인 패턴은 데이터 구조가 아닌 특정 작업 흐름에 대한 솔루션입니다 (솔루션에서 특정 데이터 구조를 사용할 수도 있음). 그래서 나는 네가 여기서 잘못된 길을 가고 있다고 생각한다. – RealSkeptic
원하는 모든 기능의 API를 만들기 만하면됩니다. 필요한 모든 작업을 수행하는 대수학과 같습니다. 그런 다음 최상의 데이터 구조가 자동으로 적합합니다. –