2013-04-24 4 views
2

나는 다음과 같은 시나리오를 (이 큰 MVC 프레임 워크에 맞는)분리 - 어떻게 코드를 달성하기 위해

가의 특정 기능에 사용할 수있는 모델 유형을 정의하는 큰 XML 설정이 있습니다 시스템 : 컨트롤러에서

<object_type1_config> 
    <type_id>1</type_id> 
    <type_model>amazinTypeModel</type_model> 
    <config_value1>blah</config_value1> 
    <config_value2>blah blah</config_value2> 
</object_type1_config> 

, 특정 요청 매개 변수에 따라 나는 런타임에 사용하고 렌더링 할 템플릿을 결정하는 모델을 결정할 수 등

추가 복잡성은 그 특정 값이 아닌 경우 confi에 선물하다. 그 모델 타입의 경우, 디폴트 값 세트가 사용될 수있다. 이 기본 값 세트는 모든 객체 유형에 대해 기본값으로 사용됩니다.

문제는 컨트롤러가이 구성 값을 구문 분석하여 매개 변수를 가져오고이 매개 변수를 기반으로 의사 결정을 내릴 수있는 논리로 채워지는 것입니다.

그래서 이것을 다른 클래스로 옮기는 것이 합리적입니다. 컨트롤러가 실제로 모델 유형을 얻기 위해 config를 구문 분석해야하기 때문에 여기에서 사용할 최상의 디자인 패턴은 무엇입니까? 그런 다음 모델 유형을 분석하고 값을 쿼리해야합니다.

내가 여기 디커플링 가지의 방법을 볼 수 없습니다

당신은 파서가 이미 하드 코드 기본 설정 값에 대한 참조를 (이 등이

class Controller { 
    Parser parser; 

    Model getModel() { 
     return parser.parseModel(userInput); 
    } 

    Template getTemplate() { 
     return parser.parseTemplate(userInput); 
    } 
} 

그리고, 같은 뭔가를 할 수

답변

0

파서 (예 : 속성 파일 이름 또는 생성자에 전달). constructor/setter를 통해 Parser를 설정할 수도 있고, Spring을 사용하는 경우 autowire 할 수도 있습니다.

+0

또 다른 1 가지 요구 사항이 있습니다. 신속하게 질문을 업데이트하겠습니다. –

+0

좋아, 업데이트했습니다. 기본값과 관련이 있습니다 –

+0

변경 사항을 반영하여 답변을 업데이트했습니다 –

관련 문제