템플릿 메소드 디자인 패턴이란?

템플릿 메소드 디자인 패턴이란?
당신과 같은 독자는 MUO를 지원하는 데 도움이 됩니다. 귀하가 당사 사이트의 링크를 사용하여 구매할 때 당사는 제휴 수수료를 받을 수 있습니다.

템플릿 메서드 디자인 패턴을 사용하면 클래스의 단일 메서드 내에서 알고리즘의 단계를 정의할 수 있습니다. 이를 통해 응용 프로그램의 특정 작업을 단일 메서드로 제한할 수 있습니다.





템플릿 메서드가 정의하는 알고리즘의 각 단계는 내부 메서드입니다. 그러나 템플릿 메서드는 내부 메서드 중 일부의 구현만 처리합니다. 서브클래스는 일반적으로 템플릿 메서드의 내부 메서드 중 하나 이상을 구현합니다.





MAKEUSEOF 오늘의 비디오

하위 클래스는 추상 메서드를 구현할 수 있지만 최종 메서드로 구현된 알고리즘을 재정의할 수는 없습니다.





youtube 비디오를 아이폰에 직접 다운로드

템플릿 방법 작동 방식

일반적인 템플릿 메서드 패턴은 다음과 같은 구조를 갖습니다.

final void templateMethod() { 
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

주목해야 할 첫 번째 중요한 점은 templateMethod()가 최종적이므로 어떤 하위 클래스도 이 메서드를 재정의할 수 없다는 것입니다. 주목해야 할 다른 중요한 사항은 템플릿 메소드 패턴이 사용하는 세 가지 유형의 메소드(구체적, 추상 및 후크)입니다.



템플릿 메서드를 포함하는 추상 클래스는 모든 구체적인 메서드를 구현하는 반면 구체적인 하위 클래스는 추상 메서드를 구현합니다. 후크 메서드는 일반적으로 기본적으로 아무 작업도 수행하지 않지만 하위 클래스에는 필요할 때 이러한 메서드를 재정의할 수 있는 기능이 있습니다.

자바에서 템플릿 메소드 패턴 구현하기

템플릿 메서드 패턴은 애플리케이션의 프레임워크 역할을 합니다. 따라서 애플리케이션 개발을 위한 청사진을 제공하는 소프트웨어 프레임워크에서 이 패턴을 자주 볼 수 있습니다.





예를 들어 애플리케이션을 여러 데이터베이스 시스템 중 하나에 연결할 수 있습니다. 데이터베이스에 연결하고 사용하는 단계는 유사한 템플릿을 따릅니다.

public abstract class Database { 
// template method
final void databaseTemplate() {
// abstract methods
setDBDriver();
setCredentials();

// concrete method
connect();

// abstract methods
createDB();
setData();
readData();

// hook methods
if (userWantsToUpdate()) {
updateData();
}

if (userWantsToDelete()) {
deleteData();
}

// concrete method
closeConnection();
}

abstract void setDBDriver();
abstract void setCredentials();
abstract void createDB();
abstract void setData();
abstract void readData();
abstract void updateData();
abstract void deleteData();

void connect() {
System.out.println("Connecting to database...");
}

void closeConnection() {
System.out.println("Destroying database connection...");
}

boolean userWantsToUpdate() {
return false;
}

boolean userWantsToDelete() {
return false;
}
}

이 예제 Database 클래스는 템플릿 메서드 패턴을 사용하여 모든 데이터베이스에서 사용할 수 있는 템플릿을 만듭니다. 데이터베이스를 사용하려면 애플리케이션이 데이터베이스에 연결한 다음 사용 후에 연결을 끊어야 합니다. 이러한 활동은 일반적으로 모든 데이터베이스에 대해 동일합니다. 따라서 추상 Database 클래스는 다음을 구현할 수 있습니다. 연결하다() 그리고 닫기 연결() 행동 양식.





플래시 게임을 다운로드하는 방법

템플릿 방법의 다른 방법은 데이터베이스 유형에 따라 다릅니다. 예를 들어 MySQL 데이터베이스는 테이블에 데이터를 저장하지만 MongoDB 데이터베이스는 컬렉션에 데이터를 저장합니다. . 사용하고 싶다면 자바의 MySQL 데이터베이스 , Database 클래스를 확장하는 새 MySQL 클래스를 생성하기만 하면 됩니다.

public class MySQL extends Database { 
@Override
void setDBDriver() {
System.out.println("Selecting MySQL driver...");
}

@Override
void setCredentials() {
System.out.println("Setting MySQL database Credential...");
}

@Override
void createDB() {
System.out.println("Creating a new table...");
}

@Override
void setData() {
System.out.println("Inserting data into database...");
}

@Override
void readData() {
System.out.println("Retrieving data from database...");
}

@Override
void updateData() {
System.out.println("Updating data in database...");
}

@Override
void deleteData() {
System.out.println("Deleting data from database...");
}
}

MySQL 클래스는 Database 클래스의 모든 추상 메소드를 구현합니다. 또한 일부 구체적인 메서드를 재정의할 수도 있습니다. 단, 건드릴 수 없다. 데이터베이스 템플릿() final 키워드를 사용하는 메소드입니다.

public class Main { 
public static void main(String[] args) {
Database mySQLDB = new MySQL();
mySQLDB.databaseTemplate();
}
}

이 Main 클래스는 새 MySQL 데이터베이스 개체를 만들고 템플릿 메서드를 사용하여 응용 프로그램이 데이터베이스에 연결하는 방법을 시뮬레이션합니다. main 메서드를 실행하면 콘솔에 다음 출력이 인쇄됩니다.

  MySQL 데이터베이스 템플릿 방법

출력에서 응용 프로그램이 업데이트 데이터() 그리고 데이터 삭제() 행동 양식. 이것이 후크 방법이 중요한 이유입니다. SQL 데이터베이스에서 새 테이블을 만들고 데이터를 삽입하고 데이터를 보고 싶을 것입니다. 그러나 데이터를 업데이트하거나 삭제하고 싶지 않을 수 있습니다. 따라서 후크 메서드는 하위 클래스에 알고리즘의 이러한 중요한 측면을 제어할 수 있는 옵션을 제공합니다.

@Override 
boolean userWantsToUpdate() {
return true;
}

위의 코드를 MySQL 클래스에 추가하기만 하면 애플리케이션이 이제 데이터베이스의 데이터를 업데이트합니다. Main 클래스를 다시 실행하면 다음과 같이 업데이트된 출력이 표시됩니다.

  MySQL 데이터베이스 템플릿 메소드 업데이트

보시다시피 애플리케이션은 이제 데이터베이스의 데이터를 업데이트하고 있습니다.

tar gz 파일의 압축을 푸는 방법

템플릿 방법 디자인 패턴 사용의 이점

템플릿 메서드 패턴의 주요 이점은 소프트웨어 재사용성을 촉진한다는 것입니다. 이 디자인 패턴은 효율적인 프로그래밍도 지원합니다. 하위 클래스는 해당 작업에 고유한 메서드만 구현하면 됩니다.

또한 템플릿 메서드 패턴을 사용하는 응용 프로그램은 외부 클래스가 작업 구조를 변경할 수 없기 때문에 더 안전합니다.