728x90
반응형
템플릿 메소드 패턴이란?
객체지향 프로그래밍에서 사용되는 설계 기법 중 하나로,
상위 수준의 알고리즘을 정의하고 하위 클래스에서 알고리즘의 일부 단계를 구체화할 수 있도록 하는 것이 목적.
템플릿 메소드 패턴은 추상 클래스를 사용한다.
부모 클래스에게 추상화를 시켜 이를 상속받은 자식 클래스에서 구체화하면서 완성할 수 있다.
즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들고, 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여,
상위의 메소드 실행 동작 순서는 고정하며 세부 실행 내용은 다양화 될 수 있는 경우에 사용. 코드의 중복을 없애기 위함.
Animal.class ( 부모 클래스를 추상 클래스로 만들어준다.)
부모 클래스역할을 하는 Animal 클래스에 하나 이상의 추상 메소드를 만들어, 하위 클래스에서 구체화할 수 있도록 한다.
People, Dog.class ( 자식 클래스로 추상 메소드를 구체화 해줘야한다. )
TemplateMethod.class (Main 메소드)
main 메소드에서 각 객체를 생성해줄 때마다, 객체에 있는 메소드들이 실행되며 부모 생성자까지 접근하여 메소드를 호출할 수 있다.
그렇다면 왜? 사용할까
템플릿 메소드를 사용하지 않고 위처럼 코드를 작성하면, 불필요한 중복 코드가 계속해서 발생될 수 있으며,
코드를 확장해서 재사용할 수 없다. 그렇다고 해서 템플릿 메소드를 주구장창 사용하기엔 알맞지 않다.
장점
- 중복 코드를 줄일 수 있다.
- 자식 클래스의 역할을 줄이고, 핵심 로직을 부모 클래스에서 관리하므로 관리가 용이해진다.
- 코드를 객체지향적으로 구성할 수 있다.
단점
- 추상 메소드가 많아지면서 클래스 관리가 복잡해질 수 있다.
- 알고리즘 구조가 복잡할수록 템플릿 로직 형태를 유지하기 어렵다.
- 하위 클래스를 통해 기본 단계 구현을 억제하여 리스코프 치환 법칙을 위반할 수 있다.
- 자식 클래스는 실제로 부모 클래스를 사용하지 않는데, 단순히 패턴 구현을 위한 상속 때문에 의존 관계를 가짐.
728x90
반응형
'✨ Java > 디자인 패턴(Design pattern)' 카테고리의 다른 글
자바(JAVA) - 전략 패턴(Strategy Pattern) - 2 (1) | 2023.08.20 |
---|---|
자바(JAVA) - 팩토리 패턴(Factory) (0) | 2023.08.20 |
자바(JAVA) - 전략 패턴(Strategy Pattern) (0) | 2023.07.13 |
자바(JAVA) - 싱글톤 패턴(Singleton) (0) | 2023.07.13 |
댓글