디자인 모델 의 - 템 플 릿 방법 모델
최근 에 < > 잠 금 에 관 한 장 을 공부 할 때 AQS 가 템 플 릿 을 사용 하 는 방법 디자인 모델 에 대해 이 야 기 했 습 니 다. AQS 의 디자인 을 이해 할 수 있 도록 템 플 릿 방법 디자인 모델, Let 's Go!
2. 템 플 릿 방법 모델 이 무엇 입 니까?
정의: 부모 클래스 에서 처리 프로 세 스 의 프레임 워 크 를 정의 하고 하위 클래스 에서 구체 적 인 처 리 를 실현 하 는 모델 은 Template Method 모델 입 니 다.
템 플 릿 을 구성 하 는 방법 은 추상 적 인 방법 이 고 부모 클래스 에 정의 된다.따라서 부모 코드 만 보면 이런 방법 들 이 최종 적 으로 어떤 구체 적 인 처 리 를 할 지 알 수 없 으 며, 유일 하 게 아 는 것 은 부모 코드 가 어떻게 이런 방법 을 호출 하 는 지 하 는 것 이다.하위 클래스 에서 추상 적 인 방법 을 실현 하면 구체 적 인 처 리 를 결정 한다.
3. 예시 코드
기능: 문자 나 문자열 을 다섯 번 반복 합 니 다.
3.1 추상 류
AbstractDisplay
public abstract class AbstractDisplay { // AbstractDisplay
public abstract void open(); // (1) open
public abstract void print(); // (2) print
public abstract void close(); // (3) close
public final void display() { // display
open(); // …
for (int i = 0; i < 5; i++) { // 5 print
print();
}
close(); // … 。 display
}
}
3.2 문자 표시 클래스
CharDisplay
추상 클래스 AbstractDisplay 계승.public class CharDisplay extends AbstractDisplay { // CharDisplay AbstractDisplay
private char ch; //
public CharDisplay(char ch) { //
this.ch = ch; //
}
public void open() { // ,
System.out.print("<>"); // ">>"
}
}
3.3 문자열 표시 클래스
StringDisplay
추상 클래스 AbstractDisplay 계승.public class StringDisplay extends AbstractDisplay { // StringDisplay AbstractDisplay
private String string; //
private int width; //
public StringDisplay(String string) { //
this.string = string; //
this.width = string.getBytes().length; // ,
}
public void open() { // open
printLine(); // printLine
}
public void print() { // print
System.out.println("|" + string + "|"); // "|"
}
public void close() { // close
printLine(); // open , printLine
}
private void printLine() { // open close 。 private,
System.out.print("+"); // "+"
for (int i = 0; i < width; i++) { // width "-"
System.out.print("-"); //
}
System.out.println("+"); // / "+"
}
}
3.4 Main
테스트 에 사용 할 주 클래스, 프로그램의 입구
public class Main {
public static void main(String[] args) {
AbstractDisplay d1 = new CharDisplay('H'); // 'H' CharDisplay
AbstractDisplay d2 = new StringDisplay("Hello, world."); // "Hello, world." StringDisplay
AbstractDisplay d3 = new StringDisplay(" , 。"); // " , 。" StringDisplay
d1.display(); // d1、d2 d3 AbstractDisplay
d2.display(); // display
d3.display(); // CharDisplay StringDisplay
}
}
총화
템 플 릿 방법 모드 는 부모 클래스 의 템 플 릿 방법 에서 처리 프로 세 스 나 알고리즘 을 작 성 했 습 니 다.그 중의 구체 적 인 조작 은 하위 클래스 에서 이 루어 진다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.