テンプレートがコードを改善する時期を示す簡単な指標は、コードでオブジェクトを別の型にキャストする必要が頻繁にある場合です。自分のJavaコードで見つけた例で、既存のメソッドシグネチャをテンプレートに変換するきっかけになりました。
public MsgBase getLastSentMessage(Class<? extends MsgBase> msgBaseClass)
私のクライアントコードは常に次のようになりました。
OrderResponse response = (OrderResponse) getLastSentMessage(OrderResponse.class);
そして、そのメソッドを使用するときはいつでも、結果をMsgBaseタイプの正しいサブクラスにキャストする必要がありました。改善されたメソッドシグネチャは次のとおりです。
public <T extends MsgBase> T getLastSentMessage(Class<T> clazz)
現在、クライアントコードは次のとおりです。
OrderResponse response = getLastSentMessage(OrderResponse.class);
要約すると、不必要に思われるキャストを大量に実行していることに気付いた場合、テンプレートがコードをクリーンアップする良いケースがあるかもしれません。
更新:上記のステートメントを一般化するより良い方法:
ソースクラスが多くの異なるタイプのオブジェクトによって使用され、ソースクラスがそれらのタイプとより高い(より抽象的な)レベルで対話できるが、クライアントクラスが特定のサブタイプと対話したい場合(テンプレートを使用する場合) 。(よく知られている例であるContainer / Listクラス)。