안녕하세요. Limky입니다.
이번 시간은 템플릿 메서드 패턴(Template Method Pattern)에 대해서 알아보겠습니다.
바로 예제를 보겠습니다.
자동 기어 변속 하는 자동차가 있고, 수동 기어 변속을 하는 자동차가 있다고 칩시다.
위와 같이 playWithOwner()메서드는 동일하게 구현되어 있지만, 가운데 자동 기어 변속인지 기어를 수동으로 조작 하는지에 대해서는 서로 다릅니다.
이럴 경우 템플릿 메서드 패턴(Template Method Pattern)을 사용해서 설계하면 됩니다.
템플릿 메서드 패턴 디자인 테이블을 먼저 봅시다.
한꺼번에 구체클래스를 구현하지 않고 추상클래스의 템플릿 메서드를 구현해 놓으면, 구체클래스 가 상속받아 자신이 필요한 메서드들을 작성해주는 방식입니다. 자 이제 템플릿 메서드 패턴(Template Method Pattern)에 의하여 코드를 수정해보겠습니다. 구체클래스들은 추상클래스 Car 상속 받아 구현하게 끔 설계합니다.
추상클래스 안에 추상메서드 선언을 해놓고 일반 메서드를 어느 정도 구현해 놓습니다.
추상클래스를 상속받은 구체클래스는 추상메서드를 강제로 오버라이딩 시켜서 재정의 해야합니다. 하지만 일반 메서드는 재정의 해도 되고 안해도 됩니다. 이런것을 Hook메서드라고 합니다. 위 경우엔 runSomething()메서드가 훅 메서드입니다. 상황에 맞게 훅 메서드를 정의하거나 안해도 됩니다.
결과
시동 켜기
사이드 브레이크 해제
클러치한 상태에서 2단 넣기
기어 수동 조작
뻑뻑하게ㅠㅠ 브레이크~!!
시동 켜기
사이드 브레이크 해제
Drive D에 기어 놓기
자동 기어 변속
스무스하게 ~ 브레이크~!!
'프로그래밍 > Design_Pattern' 카테고리의 다른 글
[Design_Pattern] 전략 패턴(Strategy Pattern) (2) | 2017.08.28 |
---|---|
[Design_Pattern] 팩토리 메서드 패턴(Factory Method Pattern) (4) | 2017.08.28 |
[Design_Pattern] 데코레이터 패턴(Decorator Pattern) (1) | 2017.08.25 |
[Design_Pattern] 프록시 패턴(Proxy Pattern) (4) | 2017.08.25 |
[Design_Pattern] 어댑터 패턴(Adapter Pattern) (1) | 2017.08.25 |
댓글