Contohnya mungkin menggunakan pernyataan kondisional karena itu adalah yang paling sederhana. Implementasi yang lebih kompleks mungkin menggunakan peta atau konfigurasi atau (jika Anda ingin benar-benar mewah) semacam registri di mana kelas dapat mendaftar sendiri. Namun tidak ada yang salah dengan menggunakan kondisi jika jumlah kelas kecil dan perubahan jarang terjadi.
Memperluas persyaratan untuk menambah dukungan untuk subkelas baru di masa depan memang akan menjadi pelanggaran prinsip terbuka / tertutup. Solusi "benar" adalah membuat pabrik baru dengan antarmuka yang sama. Yang mengatakan, kepatuhan terhadap prinsip O / C harus selalu ditimbang terhadap prinsip-prinsip desain lainnya seperti KISS dan YAGNI.
Yang mengatakan, kode yang ditampilkan jelas contoh kode yang dirancang untuk menunjukkan konsep pabrik dan tidak ada yang lain. Misalnya itu adalah gaya yang benar-benar buruk untuk mengembalikan nol seperti contohnya, tetapi penanganan kesalahan yang lebih rumit hanya akan mengaburkan intinya. Kode contoh bukan kode kualitas produksi, kode apa pun yang tidak Anda harapkan.