Pengenalan
Sama seperti corak ciptaan, corak kilang mencipta objek (dianggap sebagai produk di kilang) tanpa menyatakan kelas khusus objek yang akan dibuat.
Corak kilang mentakrifkan antara muka untuk mencipta objek Antara muka ini menentukan kelas mana yang hendak digunakan oleh subkelas. Corak ini menangguhkan instantiasi kelas kepada subkelas. Subkelas boleh mengatasi kaedah antara muka untuk menentukan jenis objek mereka sendiri semasa mencipta.
Mod ini sangat berguna, terutamanya apabila memberikan nilai kepada proses mencipta objek, seperti bergantung pada banyak fail tetapan. Selain itu, anda akan sering melihat kaedah kilang dalam program, yang digunakan untuk membenarkan subkelas menentukan jenis objek yang perlu dibuat.
Teks
Contoh berikut ialah versi peningkatan kod corak pembina dalam Bab 26 yang menggunakan kaedah kilang:
var tom = Kereta baharu("Tom", 2009, 20000);
var dudu = Kereta baharu("Dudu", 2010, 5000);
Jika sukar untuk difahami, mari berikan anda satu lagi contoh:
productManager.createProductA = fungsi () {
console.log('ProductA');
}
productManager.createProductB = fungsi () {
console.log('ProductB');
}
productManager.factory = fungsi (typeType) {
Kembalikan productManager[typeType] baharu;
}
productManager.factory("createProductA");
Jika anda masih tidak faham, mari kita perincikan dengan lebih terperinci Katakan kita ingin memasukkan beberapa elemen ke dalam halaman web, dan jenis elemen ini mungkin berupa gambar, pautan atau teks. Mengikut Untuk mentakrifkan corak kilang, kita perlu mentakrifkan kelas kilang dan subkelas yang sepadan Mari kita tentukan pelaksanaan khusus subkelas (iaitu, subfungsi):
//Sub-fungsi 2: Memproses pautan
page.dom.Pautan = fungsi () {
This.insert = fungsi (di mana) {
pautan var = document.createElement('a');
pautan.href = this.url;
link.appendChild(document.createTextNode(this.url));
Where.appendChild(pautan);
};
};
//Sub-fungsi 3: Memproses gambar
page.dom.Imej = fungsi () {
This.insert = fungsi (di mana) {
var im = document.createElement('img');
im.src = this.url;
Where.appendChild(im);
};
};
Jadi bagaimana kita mentakrifkan fungsi pemprosesan kilang? Ia sebenarnya sangat mudah:
Ringkasan
Bila menggunakan corak kilang
Mod kilang amat berguna dalam senario berikut:
1. Pembinaan objek sangat rumit
2. Contoh yang berbeza perlu dibuat bergantung pada persekitaran khusus
3. Proseskan sejumlah besar objek kecil dengan sifat yang sama
Bila tidak menggunakan mod kilang
Jangan menyalahgunakan corak kilang Kadangkala ia hanya menambahkan kerumitan yang tidak perlu pada kod dan menyukarkan untuk menjalankan ujian.