Rumah  >  Artikel  >  hujung hadapan web  >  Pemahaman mendalam tentang siri JavaScript (28): Penjelasan terperinci tentang corak kilang corak reka bentuk_kemahiran javascript

Pemahaman mendalam tentang siri JavaScript (28): Penjelasan terperinci tentang corak kilang corak reka bentuk_kemahiran javascript

WBOY
WBOYasal
2016-05-16 16:11:13982semak imbas

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:

Salin kod Kod adalah seperti berikut:

var Kereta = (fungsi () {
var Kereta = fungsi (model, tahun, batu) {
This.model = model;
This.year = tahun;
This.miles = batu;
};
Fungsi kembali (model, tahun, batu) {
         pulangkan Kereta baharu(model, tahun, batu);
};
})();

var tom = Kereta baharu("Tom", 2009, 20000);
var dudu = Kereta baharu("Dudu", 2010, 5000);

Jika sukar untuk difahami, mari berikan anda satu lagi contoh:

Salin kod Kod adalah seperti berikut:

var productManager = {};

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):

Salin kod Kod adalah seperti berikut:

halaman var = halaman ||. {};
page.dom = page.dom || {};
//Subfungsi 1: Teks proses
page.dom.Teks = fungsi () {
This.insert = fungsi (di mana) {
        var txt = document.createTextNode(this.url);
Where.appendChild(txt);
};
};

//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:

Salin kod Kod adalah seperti berikut:

page.dom.factory = fungsi (jenis) {
Kembalikan page.dom[type] baharu;
}

Cara menggunakan:
Salin kod Kod adalah seperti berikut:

var o = page.dom.factory('Pautan');
o.url = 'http://www.cnblogs.com';
o.insert(document.body);

Pada ketika ini, saya percaya semua orang mempunyai pemahaman yang jelas tentang pengenalan kepada model kilang, jadi saya tidak akan menghuraikan lebih lanjut.

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.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn