デザインパターン - テンプレートメソッド

定義

就是定义算法骨架的方法 具体的操作:在模板中直接实现某些步骤的方法,通常这些步骤的实现算法是固定的,而且是不怎么变化的,因此就可以当作公共功能实现在模板里面。
其实写设计模式的系列笔记就是一种模板方法,每篇文章的流程(目录)都是一样的,我实现了每个部分的具体细节。

テンプレート

テンプレートの方法は比較的簡単ですが、最初のコンセプトを聞いて、私は一種類が元々使用したテンプレート法と呼ばれる自分自身を発見しました。
テンプレートメソッドTemplateMethodは抽象クラスで達成することであり、特定の番号を使用し、この特定の方法であればサブクラスが抽象テンプレートを継承するように、そのようなPrimitiveOperation1 / PrimitiveOperation2として処理し、外部のテンプレート方法を提供することができる能力を特定のプロセスを実装します。

abstract class Shoping {
    // 模板方法,由父类实现,可以定义为final
    public final void buyGood() {
       login();
       order();
       pay();
    }
    
    abstract void login();
    abstract void order();
    abstract void pay();
}

JingdongBuy extends Shoping {
    public void login() {
        Log.d("登录京东账号");
    }

    public void order() {
        Log.d("生成京东订单");
    }

    public void pay() {
        Log.d("使用京东白条支付");
    }
}

TaobaoBuy extends Shoping {
    public void login() {
        Log.d("登录淘宝账号");
    }

    public void order() {
        Log.d("生成淘宝订单");
    }

    public void pay() {
        Log.d("使用支付宝支付");
    }
}

利点

異なるオペレーティング解剖違いの間に抽象化共通基盤へのテンプレートベースのアプローチ。
共通の基盤を求めて:抽象クラスで達成共通の基盤を、様々なサブクラスの異なる具体的な実現を禁じます。

  1. コードの重複を減らす、送信は、拡張やメンテナンスに従います
  2. 開閉の原則に沿って、サブクラスは、機能を拡張することができます

短所

  1. 抽象クラスを増やします
  2. より困難なコードを読む(達成するために探してサブクラス化する必要があります)

注:要約過度の拡張後は、トラブルの原因となり、プロセステンプレートの後に変更されないことを保証してみてください

おすすめ

転載: www.cnblogs.com/NeilZhang/p/11900965.html