Pola Metode Pabrik mengabstraksi proses pengambilan keputusan dari kelas panggilan. Ini memiliki beberapa keunggulan:
Penggunaan kembali. Jika saya ingin membuat instantiate di banyak tempat, saya tidak perlu mengulangi kondisi saya, jadi ketika saya datang untuk menambah kelas baru, saya tidak berisiko kehilangan yang baru.
Unit-Testability. Saya dapat menulis 3 tes untuk pabrik, untuk memastikan itu mengembalikan jenis yang benar pada kondisi yang benar, maka kelas panggilan saya hanya perlu diuji untuk melihat apakah itu memanggil pabrik dan kemudian metode yang diperlukan pada kelas yang dikembalikan. Perlu tahu apa-apa tentang implementasi pabrik itu sendiri atau kelas beton.
Kemungkinan diperpanjang. Ketika seseorang memutuskan kita perlu menambahkan kelas D baru ke pabrik ini, tidak ada kode panggilan, baik tes unit atau implementasi, yang perlu diceritakan. Kami cukup membuat kelas D baru dan memperluas metode pabrik kami. Ini adalah definisi dari Prinsip Terbuka-Tertutup .
Anda bahkan dapat membuat kelas pabrik baru dan membuatnya hot-swappable, jika situasinya mengharuskannya - misalnya, jika Anda ingin dapat mengaktifkan dan menonaktifkan kelas D, saat pengujian. Saya pernah mengalami situasi ini hanya sekali, tetapi itu sangat berguna.
Seperti yang telah dikatakan, Pola Pabrik tidak selalu cara untuk pergi. Tapi, di mana pun Anda melihat instantiation bersyarat, Anda harus memikirkannya sejenak.