저는 Android Java 프로젝트에서 작업 중이며 두 곳에서 사용되는 상황에 대해 더 나은 패턴을 사용할 수 있다는 것을 직감합니다.디자인 패턴 - 다른 객체가있는 동일한 객체가 반환되었습니다.
필자는 입력 된 모델/오브젝트에서 ContentValues (기본적으로 키/값 오브젝트)를 빌드하고 입력중인 오브젝트에 따라 다른 키/값을 갖는 ContentValue 오브젝트를 리턴합니다.
현재, ContentValues를 생성하려는 각 객체에 대한 메소드가 있습니다. 예컨대 :
public ContentValues BuildPage (Page p){
ContentValues val = new ContentValues();
val.put(PAGE_DESCRIPTION, p.getDesciption());
val.put(PAGE_DISPLAYABLE, BitmapHelper.ConvertToBlob(p.getPic()));
val.put(PAGE_MODULE_ID, p.getModuleId());
val.put(PAGE_TITLE, p.getTitle());
return val;
}
public ContentValues BuildQuestion(Question q){
ContentValues val = new ContentValues();
val.put(QUESTION_CORRECT, q.getCorrect());
val.put(QUESTION_QUESTION, q.getQuestion());
val.put(QUESTION_QUIZ_ID, q.getQuizId());
return val;
}
내 직감은 아마 그것을하는 더 나은 방법이 있다는 것을 알려줍니다.
두 번째 상황은 거의 정반대입니다. 나는 같은 물체를 입력하고, 다른 물체를 만들고 그것을 반환한다. 예 :
public Quiz BuildQuizObj(Cursor c){
//{QUIZ_ID, QUIZ_MODULE_ID};
Quiz q = new Quiz();
if(CursorIsOk(c)){
c.moveToFirst();
q.setId(c.getLong(0));
q.setModuleId(c.getLong(1));
}
return q;
}
public Module BuildModuleObj(Cursor c){
List<Module> modules = BuildModulesObj(c);
Module m = new Module();
if(modules.size() > 0){
m = modules.get(0);
}
return m;
}
그래서 내 질문은 : 나는 그래서 대신 각각의 새로운 객체에 대한 새로운 방법을 만드는 같은 방법을 사용할 수있는보다 일반화 된 방법으로 동일한 기능을하는 데 사용할 수있는 디자인 패턴이 있습니까 내가 사용하고 싶습니까?
좋은 구현입니다. 구현이 각각의 클래스에 있어야한다고 생각했지만, 일반적인 인터페이스는 생각하지 않았습니다. 감사. 대체 솔루션도 환영합니다. –
안녕하세요, 고맙습니다. 인터페이스 이름을 약간만 추가하고 싶습니다. Buildable은 오히려 빌더이고 Quiz and Module이고 다른 클래스는 Buildable을 구현해야합니다. 질문이 있으면 나중에 대답을 업데이트 할 것입니다 :) – ElDuderino