>  기사  >  백엔드 개발  >  템플릿 메소드 패턴 및 해당 PHP 구현

템플릿 메소드 패턴 및 해당 PHP 구현

伊谢尔伦
伊谢尔伦원래의
2016-12-01 11:46:041104검색

템플릿 메서드 패턴은 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기하는 동작 패턴입니다. 템플릿 방법을 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다.

주요 역할

추상 템플릿(AbstractClass) 역할

구현할 하위 클래스에 대한 하나 이상의 추상 메서드를 정의합니다. 이러한 추상 메서드를 기본 작업이라고 하며 최상위 논리의 구성 요소입니다.

템플릿 방법을 정의합니다. 이 템플릿 메소드는 일반적으로 최상위 로직의 뼈대를 제공하는 구체적인 메소드이며 논리적 구성 단계는 해당 추상 작업에 있으며 이러한 작업은 하위 클래스로 연기됩니다. 동시에 최상위 로직은 특정 구현 메서드

구체 템플릿(ConcrteClass) 역할

을 호출하여 부모 클래스의 하나 이상의 추상 메서드를 구현할 수도 있습니다. 최상위 로직의 구성 요소입니다.

각 추상 템플릿에는 그에 상응하는 여러 개의 구체적인 템플릿이 있을 수 있으며, 각 구체적인 템플릿에는 고유한 추상 메소드 구현(즉, 최상위 로직의 구성 요소)이 있으므로 최상위 논리는 동일하지 않습니다.

적용성

알고리즘의 불변 부분을 한 번 구현하고 변수 동작을 하위 클래스에 남겨둡니다.

코드 중복을 피하기 위해 각 하위 클래스의 공통 동작을 추출하여 공통 상위 클래스에 집중해야 합니다.

하위 클래스 확장을 제어합니다.

클래스 다이어그램

템플릿 메소드 패턴 및 해당 PHP 구현템플릿 메소드 패턴 및 해당 PHP 구현

인스턴스

<?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();
?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.