디자인 패턴은 열두 템플릿 모드 노트

우유 생산 문제

다음과 같이 우유를 생산 프로그래밍 :

  1. 선정 과정에서 우유의 생산 -> 성분 추가 -> 흡수 -> 두유은으로 나누어
  2. 다른 재료를 추가하면 우유의 다른 맛을 만들 수 있습니다
  3. 선택하고, 동일 두유 각각의 맛을 만들려면 다음 단계를 깰 두유에 스며
  4. 템플릿 메소드 패턴이 완료를 사용하십시오 (참고 : 템플릿 메소드 패턴은 비교적 간단하기 때문에, 그것은 직접 사용하므로, 더 이상 야기가 템플릿 메소드 패턴 전통적인 방법을 사용,이 프로그램을 생각하기 쉽다 없음)

템플릿 메소드 패턴 기본 소개

기본 소개

  1. 메소드 패턴 템플릿 (템플릿 메소드 패턴)라고도 주형 패턴 (템플릿 패턴), Z는 방법이 템플릿을 실행하는 추상 클래스 정의에 관한 것이다. 그것의 서브 클래스를 달성하기 위해 필요에 따라 메소드를 오버라이드 (override) 할 수 있지만, 호출은 추상 클래스에 정의됩니다.
  2. 간략하게는, 템플릿 방식 골격 모델 알고리즘 서브 일부 단계를 연기하면서, 서브 클래스가 재정의 할 수있는 알고리즘의 특정 단계에, 이러한 구성 알고리즘을 변경할 수 있으며, 하나 개의 연산으로 정의
  3. 디자인 패턴이 유형의 행동 패턴을 속한다.

템플릿 메소드 패턴 클래스 다이어그램 원리

원리 16.3.1 템플릿 메소드 패턴의 클래스 다이어그램
그림 삽입 설명 여기
원칙의 클래스 다이어그램 설명  - 그 (템플릿 메소드 패턴의 역할과 책임)

  1. 추상 클래스 AbstractClass, 클래스 구현 템플릿 방법 (템플릿), 알고리즘을 정의 골격은, 구상 서브 클래스가 다른 방법을 추상적 operationr2,3,4를 구현해야
  2. ConcreteClass는 특성의 하위 클래스에서 알고리즘의 단계를 완료, 추상 메소드의 operationr2,3,4를 구현

템플릿 메소드 패턴은 우유 생산의 문제를 해결하기 위해

  1. 응용 프로그램의 예는 필요
    다음과 같이 우유 생산의 프로그래밍 :
    우유 흐름 선택의 생산 -> 성분 추가 -> 몸을 담글 -> 두유 다른 성분을 추가로 깨진, 우유의 다른 맛 생산할 수있는
    선택, 침수 및 방전 모든 맛 우유 생산을 위해 여러 단계로 나누어 두유있는 같은 (팥, 땅콩, 우유 ...)

  2. 아이디어 및 분석 방식 (도 클래스)
    그림 삽입 설명 여기

후크 방법 템플릿 메소드 패턴

  1. 경우는 서브 클래스가 호출되는, 그것을 커버하지 않는 될 수 있으므로 부모 클래스 템플릿 메소드 패턴에서, 우리는 기본적으로 아무것도하지 않는 방법을 정의 할 수 있습니다 "후크."
  2. 또는 위의 예와 우유는, 예를 들어, 우리는 또한, 어떤 재료를 추가 템플릿 방식의 전면을 변환하는 후크 방법을 사용하지 않는, 순수한 우유를 만들고 싶어 설명하기 않는다
  3. 코드 보여줍니다
//抽象类,表示豆浆
public abstract class SoyaMilk {

	//模板方法, make , 模板方法可以做成final , 不让子类去覆盖.
	final void make() {
		
		select(); 
		if(customerWantCondiments()) {
			addCondiments();
		}
		soak();
		beat();
		
	}
	
	//选材料
	void select() {
		System.out.println("第一步:选择好的新鲜黄豆  ");
	}
	
	//添加不同的配料, 抽象方法, 子类具体实现
	abstract void addCondiments();
	
	//浸泡
	void soak() {
		System.out.println("第三步, 黄豆和配料开始浸泡, 需要3小时 ");
	}
	 
	void beat() {
		System.out.println("第四步:黄豆和配料放到豆浆机去打碎  ");
	}
	
	//钩子方法,决定是否需要添加配料
	boolean customerWantCondiments() {
		return true;
	}
}

소스 스프링 프레임 워크 응용 프로그램에서 16.6 템플릿 메소드 패턴 분석

  1. 봄 IOC 컨테이너 템플릿 메소드 패턴을 초기화하기 위해 적용 할 때
  2. 분석 문자 코드 분석 + + 클래스도 설명했다.
    그림 삽입 설명 여기
  3. 소스 코드 (지침 계층 구조)에 대한 클래스 다이어그램
    그림 삽입 설명 여기

노트 및 템플릿 메소드 패턴의 세부 사항

  1. 기본적인 아이디어는 다음과 같습니다 알고리즘은 단 한 곳에서, 즉, 상위 클래스에 수정이 용이 존재한다. 필요가 알고리즘을 수정하면, 한 부모 클래스의 방법은 특정 단계를 템플릿을 수정하거나 이미 구현에 관해서는, 서브 클래스는 이러한 변경 사항을 상속합니다
  2. 코드 재사용을 최대화합니다. 템플릿 메소드 부모 클래스와 단계의 서브 클래스 일부는 상속을 사용하여 직접 실현 될 것입니다.
  3. 두 통합 알고리즘은 또한 상당한 유연성을 제공한다. 템플릿 상위 클래스의 메소드는 서브 클래스에 의해 달성되는 단계들을 제공하면서 알고리즘 구조가 변하지 않도록한다.
  4. 모델의 부적합성은 : 다른 구현 예들 각각은 시스템이 더 크게 만들고, 클래스의 수를 증가의 결과 달성 서브 클래스를 필요
  5. 일반 템플릿 메소드는 서브 클래스가 템플릿 메소드를 오버라이드 (override) 방지하기 위해, 최종 키워드와 결합됩니다.
  6. 템플릿 메소드 패턴의 사용 시나리오 : 프로세스에 완료하는 프로세스는 일련의 단계를 수행 할 때, 이러한 일련의 단계는 기본적으로 동일하지만, 각 단계를 구현하는 경우, 일반적으로 템플릿 메소드 패턴 처리로 간주됩니다 다를 수 있습니다
게시 93 개 원래 기사 · 원 찬양 31 ·은 30000 +를 볼

추천

출처blog.csdn.net/weixin_43866567/article/details/104841518