The Spring Web model-view-controller (MVC) framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for uploading files.
The Spring Web model-view-controller (MVC) framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for uploading files.
3. Extract Interface
■ 동기
- 여러 클래스의 동일한 책임 부분을 인터페이스
상속으로 명확하게 한다.
- 인터페이스 상속으로 기능을 추가하는 방법은
다중 상속으로 처리된다.
C++ : 순수 가상함수 상속
JAVA : 인터페이스 상속
클래스가 서로 다른 상황에서 별개의 역할을
가지고 있을 때는 언제나 인터페이스를
사용하는 것이 좋다.
4. Extract Interface
■ 절차
- 빈 인터페이스를 만든다.
- 공통된 오퍼레이션을 인터페이스에 선언한다.
- 관련이 있는 클래스들이 이 인터페이스를
구현하도록 선언한다.
- 클라이언트에서 새로 만든 인터페이스를
사용하도록 타입 선언을 조정한다.
7. Collapse Hierarchy
■ 동기
- 클래스 상속 구조에서 메소드를 위/아래로
옮기는 리펙토링을 한다.
- 리펙토링 작업 이후 더 이상 작동하지 않는
서브클래스를 발견하면 클래스를 하나로 합친다.
상속 관계에서 불필요한 클래스를 합친다.
8. Collapse Hierarchy
■ 절차
- 제거할 클래스(수퍼클래스, 서브클래스)를
선택한다.
- 메소드와 필드를 위/아래로 옮긴다.
Pull Up Field(368), Pull Up Method(370)
Push Down Method(376), Push Down Field(377)
- 제거될 클래스의 참조를 합병된 클래스로
변경한다.
- 빈 클래스를 제거하고 컴파일 및 테스트를 한다.
9. Form Template Method
■ 각각의 서브 클래스에
동일한 순서로 비슷한 단계를 진행하지만,
단계가 완전히 같지 않는 두 메소드가 있다면,
그 단계를 동일한 시그너처를 가진 메소드로
만들어라.
이렇게 하면 메소드를 수퍼클래스로
올릴 수 있다.
11. Form Template Method
■ 동기
- 상속은 중복된 동작을 제거하는데 있어서
강력한 도구이다.
- 서브 클래스의 비슷한 메소드를
수퍼 클래스로 옮긴다.(Form Template Method)
- 순서를 수퍼 클래스로 옮기고,
각 단계별 처리는 다형성을 사용해서
상속받은 메소드에서 다른 방법으로 처리한다.
템플릿 메소드(Templete Method. GOF)
12. Form Template Method
■ 절차 - 01
- 메소드들을 분해해서 추출된 모든 메소드들이
동일하거나 또는 완전히 다르게 한다.
- Pull Up Method(370)을 사용하여 동일한
메소드들을 수퍼클래스로 옮긴다.
- 서로 다른 메소드의 시그너처를
Rename Method(313)를 사용하여 각 단계의
시그너처와 같아지도록 한다.
- 각각의 시그너처 변경후 컴파일, 테스트를 한다.
13. Form Template Method
■ 절차 - 02
- 원래 메소드들 중에 하나에
Pull Up Method(370)를 사용한다.
- 서로 다른 메소드들의 시그너처는
수퍼클래스에 추상 메소드로 정의한다.
- 컴파일, 테스트를 한다.
- 그 밖의 메소드들을 제거하고 정리한 후에
컴파일, 테스트를 한다.