Indikator sederhana kapan templat akan memperbaiki kode Anda, adalah ketika Anda melihat bahwa kode Anda sering mengharuskan Anda untuk melemparkan objek ke jenis yang berbeda. Contoh yang saya temukan di kode Java saya sendiri, yang memicu saya untuk mengonversi tanda tangan metode yang ada ke templat:
public MsgBase getLastSentMessage(Class<? extends MsgBase> msgBaseClass)
Kode klien saya selalu terlihat seperti ini:
OrderResponse response = (OrderResponse) getLastSentMessage(OrderResponse.class);
dan setiap kali saya menggunakan metode itu, saya harus memberikan hasilnya ke subclass yang benar dari tipe MsgBase. Tanda tangan metode yang ditingkatkan adalah:
public <T extends MsgBase> T getLastSentMessage(Class<T> clazz)
Sekarang kode klien adalah:
OrderResponse response = getLastSentMessage(OrderResponse.class);
Jadi untuk meringkas, jika Anda menemukan diri Anda melakukan banyak casting yang tampaknya tidak perlu, Anda mungkin memiliki kasus yang bagus di mana templat akan membersihkan kode Anda.
Pembaruan: cara yang lebih baik untuk menggeneralisasi pernyataan di atas:
Ketika kelas sumber Anda akan digunakan oleh objek dari berbagai jenis, dan kelas sumber dapat berinteraksi dengan jenis-jenis itu pada tingkat yang lebih tinggi (lebih abstrak), tetapi kelas klien Anda ingin berinteraksi dengan subtipe tertentu, itu adalah kasus untuk menggunakan templat . (Kelas Container / List menjadi contoh yang terkenal).