>Java >java지도 시간 >Java 23 디자인 패턴의 자세한 사례 설명: 템플릿 메소드 패턴(코드 포함)

Java 23 디자인 패턴의 자세한 사례 설명: 템플릿 메소드 패턴(코드 포함)

php是最好的语言
php是最好的语言원래의
2018-07-30 10:52:491592검색

Definition

작업 프레임워크를 알고리즘으로 정의하고 일부 단계는 하위 클래스로 연기합니다. 이를 통해 서브클래스는 알고리즘 구조를 변경하지 않고도 알고리즘의 특정 특정 단계를 재정의할 수 있습니다.

role

이 디자인 패턴의 역할 구분은 비교적 간단합니다

  • 추상 템플릿 클래스 #🎜 🎜#

  • 콘크리트 템플릿 클래스

추상 템플릿 클래스에는 여러 가지 메서드가 포함되어 있습니다: 템플릿 메서드, 구체적 메서드, Abstract 방법, 후크 방법.

  • 템플릿 메서드

은 이 메서드에서 특정 메서드가 호출되는 방식을 결정합니다. .추상 메소드, 후크 메소드 등을 구현했습니다. 알고리즘 실행을 위한 템플릿입니다.

  • 특정 메소드

특정 메소드는 알고리즘에서 더 안정적인 부분이므로 추상 클래스는 제공 메소드의 구체적인 구현이 제공됩니다.

  • 추상 메서드

추상 메서드는 바로 정의에 언급된 메서드이며 하위 클래스로 지연됩니다. 구현 .

  • Hook 방식

일반 템플릿 방식은 상황에 따라 기본 구현을 제공합니다. 이 메서드는 재정의됩니다.

UML

구현 프로세스

/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}
rrree

정의

#🎜 🎜#정의 일부 단계를 하위 클래스로 연기하는 알고리즘 작업을 위한 프레임워크입니다. 이를 통해 서브클래스는 알고리즘 구조를 변경하지 않고도 알고리즘의 특정 특정 단계를 재정의할 수 있습니다.

role

이 디자인 패턴의 역할 구분은 비교적 간단합니다

    추상 템플릿 클래스
  • #🎜 🎜#

    콘크리트 템플릿 클래스
  • 추상 템플릿 클래스에는 템플릿 메서드, 구체적 메서드, 추상 메서드, 후크 하위 메서드 등 여러 메서드가 포함되어 있습니다. .

템플릿 메서드
  • 은 이 메서드에서 특정 메서드가 호출되는 방식을 결정합니다. .추상 메소드, 후크 메소드 등을 구현했습니다. 알고리즘 실행을 위한 템플릿입니다.

특정 메소드
  • 특정 메소드는 알고리즘에서 더 안정적인 부분이므로 추상 클래스는 제공 메소드의 구체적인 구현이 제공됩니다.

추상 메서드
  • 추상 메서드는 바로 정의에 언급된 메서드이며 하위 클래스로 지연됩니다. 구현 .

Hook 방식
  • 일반 템플릿 방식은 상황에 따라 기본 구현을 제공합니다. 이 메서드는 재정의됩니다.
UML

구현 프로세스

/**
 * Created by tiantian on 2018/7/28
 */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
    @Override
    public void abstractMethod() {
        System.out.println("Do something");
    }    @Override
    public void hookMethod() {
        System.out.println("Do something in hookMethod");
    }
}
/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}

관련 기사:

#🎜 🎜 #

Java 디자인 패턴 - 디자인 패턴의 6가지 원칙

JAVA 디자인 패턴 팩토리 패턴(간단한 팩토리 패턴 + 팩토리 메소드 패턴) #🎜 🎜#

관련 동영상:

디자인 패턴

위 내용은 Java 23 디자인 패턴의 자세한 사례 설명: 템플릿 메소드 패턴(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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