템플릿은 동작 디자인 패턴 중 하나이며 추상 클래스는 해당 메서드를 실행하는 방법/템플릿 집합을 정의합니다.
하위 클래스는 이러한 메서드를 재정의/구현할 수 있지만 호출은 추상 클래스에서 정의한 것과 동일한 방식으로 이루어져야 합니다
예를 들어 이해해 보겠습니다.
핵심 개념
템플릿: 알고리즘의 구조/방식/템플릿을 정의하는 추상 클래스
구체적인 구현: 템플릿의 구체적인 구현
클라이언트: 이 템플릿을 사용할 클라이언트
public abstract class Game주형{ //these below methods can be overridden based on the type of game public abstract void initialize(); public abstract void startPlay(); public abstract void endPlay(); //All the subclasses must use this same method to play the game i.e. following the same template present in this method, //Hence it is declared as final. public final void play(){ initialize(); startPlay(); endPlay(); } } public class Cricket extends Game주형{ @Override public void initialize(){ System.out.println("Cricket has been initialized"); } @Override public void startPlay(){ System.out.println("Cricket game has been started"); } @Override public void endPlay(){ System.out.println("Cricket game has ended"); } } public class Football extends Game주형{ @Override public void initialize(){ System.out.println("Football has been initialized"); } @Override public void startPlay(){ System.out.println("Football game has been started"); } @Override public void endPlay(){ System.out.println("Football game has ended"); } } public class Main{ public static void main(String args[]){ //Create a football game object Game주형 football = new Football(); football.play();// play() will strictly follow the sequence of method execution defined in the final play() method Game주형 cricket = new Cricket(); cricket.play(); } }
출력:
Football has been initialized Football game has been started Football game has ended Cricket has been initialized Cricket game has been started Cricket game has ended
참고: 코드는 LSP, ISP, SRP, OCP와 같은 모든 설계 원칙을 따릅니다
위 내용은 주형의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!