テンプレートは動作設計パターンの 1 つであり、抽象クラスはそのメソッドを実行するための一連の方法/テンプレートを定義します。
そのサブクラスはこれらのメソッドをオーバーライド/実装できますが、呼び出しは抽象クラスで定義されたのと同じ方法で行われます
これを例で理解してみましょう:
主要な概念
テンプレート: アルゴリズムの構造/方法/テンプレートを定義する抽象クラス
具体的な実装: テンプレートの具体的な実装
クライアント: このテンプレートを使用するクライアント
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 中国語 Web サイトの他の関連記事を参照してください。