Teori corak reka bentuk Javascript dan mempraktikkan kemahiran javascript pattern_javascript kilang yang mudah

WBOY
Lepaskan: 2016-05-16 15:33:58
asal
1221 orang telah melayarinya

Direktori Membaca

Pengenalan asas
Berikan contoh
Ringkasan

Corak kilang yang ringkas menggunakan kaedah untuk menentukan tika kelas yang hendak dibuat, dan tika ini selalunya mempunyai antara muka yang sama Corak ini digunakan terutamanya apabila jenis yang digunakan tidak dapat ditentukan pada masa penyusunan, tetapi situasi diputuskan semasa pelaksanaan. tempoh. Secara ringkasnya, ia seperti mesin minuman di pantri syarikat Anda mahu kopi atau susu bergantung pada butang yang anda tekan.

Corak kilang yang ringkas juga sangat berguna apabila mencipta objek ajax.

Biasanya cara yang paling biasa untuk kita mencipta objek ialah menggunakan kata kunci baharu untuk memanggil pembina, yang akan membawa kepada kebergantungan antara objek. Corak kilang ialah corak reka bentuk yang membantu menghapuskan kebergantungan antara kelas dengan menggunakan kaedah untuk menentukan kelas mana yang hendak digunakan. Artikel ini memperkenalkan teori corak kilang ringkas secara terperinci dan menggambarkan aplikasi khusus corak kilang ringkas.

Pengenalan asas

Corak kilang yang ringkas adalah yang paling asas daripada corak kilang. Dengan mentakrifkan kelas kilang, kelas produk tertentu dibuat berdasarkan parameter.

Contoh

Mari kita ambil contoh untuk menggambarkan: Katakan kita membangunkan tapak web industri pelancongan yang menjual tiket penerbangan, hotel dan produk lain. Seorang pengguna bersedia untuk membeli tiket. Kita boleh mentakrifkan kelas berkaitan seperti berikut:

 var productEnums = {
   flight: "flight",
   hotel: "hotel"
 };
 function Flight() {
   console.log("This is Flight");
 }
 function Hotel() {
   console.log("This is Hotel");
 }
 function User() {
   this.shopCart = [];
 }
 User.prototype = {
   constructor: User,
   order: function (productType) {
     var product = null;
     switch (productType) {
       case productEnums.flight:
         product = new Flight();
       case productEnums.hotel:
         product = new Hotel();
       default:
     }
     this.shopCart.push(product);
   }
 }
 var user = new User();
 user.order(productEnums.flight);
Salin selepas log masuk

Kod ini mentakrifkan tiga kelas: Pengguna kelas pengguna, Penerbangan kelas tiket dan Hotel kelas hotel, di mana Pengguna mengandungi kaedah tempahan. Pengguna boleh terus memasukkan jenis produk semasa membuat tempahan. Tidak ada yang salah dengan kod ini pada pandangan pertama, tetapi keperluan dan perniagaan berubah pada bila-bila masa Jika perniagaan syarikat berkembang dan perkhidmatan visa ditambah, kami perlu mengubah suai kelas Pengguna untuk memastikan ia menyokong visa. Sudah tentu kita boleh melakukan ini, tetapi apa yang salah dengan mengubah suai kelas Pengguna secara langsung?

Perkara pertama yang ingin saya bincangkan ialah kelas Pengguna Kelas ini mewakili kelas pengguna, dan kelas pengguna pada asasnya tidak berkaitan dengan jenis perniagaan tertentu, maksudnya, perniagaan mungkin meningkat pada bila-bila masa. tetapi pengguna tidak mempunyai apa-apa kaitan dengan perniagaan. Kod adalah apa yang mencipta pesanan produk. Perniagaan visa baharu pada asasnya tidak berbeza dengan tiket penerbangan dan hotel sedia ada Jika anda perlu mengubah suai kelas Pengguna setiap kali anda menambah perniagaan, ini akan menjejaskan kestabilan dan kebolehselenggaraan kod yang lebih baik Kaedahnya mempunyai kelas penciptaan pesanan khusus untuk menguruskan perniagaan yang berbeza Kelas ini adalah kilang yang ringkas.

Kami mengubah suai kod seperti berikut:

var productFactory = (function () {
   var productFactories = {
     "flight": function () {
       return new Flight();
     },
     "hotel": function () {
       return new Hotel();
     }
   };
   return {
     createProduct: function (productType) {
       return productFactories[productType]();
     }
   }
 })();
 User.prototype = {
   constructor: User,
   order: function (productType) {
     this.shopCart.push(productFactory.createProduct(productType));
   }
 }
Salin selepas log masuk

Terdapat dua pengubahsuaian utama pada kod ini:

(1) Menambah kilang produk untuk mengembalikan objek berbeza mengikut jenis produk yang berbeza

(2) Ubah suai kaedah pesanan kelas Pengguna untuk memanggil kaedah cipta produk dalam kelas kilang.

Faedah melakukan ini ialah:

(1) Jadikan kaedah pesanan Pengguna lebih fokus, hanya melakukan fungsi tempahan produk, dan mengekstrak serta mencipta pesanan produk ke dalam kelas kilang khusus, menjadikan kod lebih ringkas dan jelas

(2) Sebuah kilang khusus untuk menguruskan produk Adalah mudah untuk menambah produk baru tanpa mengubahsuai kelas Pengguna

Ringkasan

Ciri utama corak kilang yang mudah adalah untuk memisahkan penciptaan dan penggunaan objek Ia terutamanya terdiri daripada 3 bahagian:

1. Objek menggunakan kelas, iaitu pengguna yang dicipta oleh kilang dan tiada kaitan dengan jenis dan proses penciptaan objek

2. Kelas kilang mencipta objek berbeza berdasarkan parameter yang dihantar dan mengembalikannya ke objek menggunakan kelas Ia termasuk proses penciptaan objek yang berbeza, kelas mesti diubah suai 🎜>

3. Kelas objek, kelas berbeza yang dihasilkan oleh perniagaan yang berbeza, adalah produk yang dihasilkan oleh kilang

Kelebihan model kilang ringkas

1 Kelas kilang memusatkan penciptaan semua objek, memudahkan pengurusan bersepadu penciptaan objek


2. Pengguna objek hanya menggunakan produk dan menyedari satu tanggungjawab


3. Mudah dikembangkan Jika perniagaan baharu ditambah, anda hanya perlu menambah kelas objek perniagaan yang berkaitan dan kaedah menghasilkan objek perniagaan dalam kelas kilang, dan tidak perlu mengubah suai tempat lain.

Senario yang berkenaan

1. Kejadian yang berbeza perlu dijana mengikut parameter yang berbeza, dan kejadian ini mempunyai beberapa senario biasa


2. Pengguna hanya perlu menggunakan produk dan tidak perlu mengetahui butiran penciptaan produk

Nota: Melainkan ia terpakai pada senario, corak kilang tidak boleh disalahgunakan, yang akan menyebabkan kerumitan kod.

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan