템플릿 메서드 패턴은 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기하는 동작 패턴입니다. 템플릿 방법을 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다.
주요 역할
추상 템플릿(AbstractClass) 역할
구현할 하위 클래스에 대한 하나 이상의 추상 메서드를 정의합니다. 이러한 추상 메서드를 기본 작업이라고 하며 최상위 논리의 구성 요소입니다.
템플릿 방법을 정의합니다. 이 템플릿 메소드는 일반적으로 최상위 로직의 뼈대를 제공하는 구체적인 메소드이며 논리적 구성 단계는 해당 추상 작업에 있으며 이러한 작업은 하위 클래스로 연기됩니다. 동시에 최상위 로직은 특정 구현 메서드
구체 템플릿(ConcrteClass) 역할
을 호출하여 부모 클래스의 하나 이상의 추상 메서드를 구현할 수도 있습니다. 최상위 로직의 구성 요소입니다.
각 추상 템플릿에는 그에 상응하는 여러 개의 구체적인 템플릿이 있을 수 있으며, 각 구체적인 템플릿에는 고유한 추상 메소드 구현(즉, 최상위 로직의 구성 요소)이 있으므로 최상위 논리는 동일하지 않습니다.
적용성
알고리즘의 불변 부분을 한 번 구현하고 변수 동작을 하위 클래스에 남겨둡니다.
코드 중복을 피하기 위해 각 하위 클래스의 공통 동작을 추출하여 공통 상위 클래스에 집중해야 합니다.
하위 클래스 확장을 제어합니다.
클래스 다이어그램
인스턴스
<?php abstract class AbstractClass { // 抽象模板角色 public function templateMethod() { // 模板方法 调用基本方法组装顶层逻辑 $this->primitiveOperation1(); $this->primitiveOperation2(); } abstract protected function primitiveOperation1(); // 基本方法 abstract protected function primitiveOperation2(); } class ConcreteClass extends AbstractClass { // 具体模板角色 protected function primitiveOperation1() {} protected function primitiveOperation2(){} } $class = new ConcreteClass(); $class->templateMethod(); ?>