Acara yang berlaku:
7.3 kesempatan yang berlaku untuk model pabrik
Cara termudah untuk membuat objek baru adalah dengan menggunakan kata kunci dan kelas konkret baru. Hanya pada beberapa kesempatan yang dapat menjadi kompleksitas ekstra dalam menciptakan dan memelihara pabrik objek sepadan dengan uangnya. Bagian ini merangkum kesempatan ini.
7.3.1 Implementasi Dinamis
Jika Anda perlu membuat objek yang mengimplementasikan antarmuka yang sama dengan cara yang berbeda, seperti contoh sepeda sebelumnya, Anda dapat menggunakan metode pabrik atau objek pabrik sederhana untuk menyederhanakan proses pemilihan implementasi. Pilihan ini dapat dibuat secara eksplisit atau implisit. Yang pertama seperti contoh sepeda, dan pelanggan dapat memilih model sepeda yang Anda butuhkan; sedangkan contoh pabrik XHR yang disebutkan di bagian selanjutnya milik yang terakhir. Jenis objek koneksi yang dikembalikan dalam contoh ini tergantung pada bandwidth yang terdeteksi dan faktor penundaan jaringan. Dalam situasi ini, Anda biasanya harus berurusan dengan serangkaian kelas yang menerapkan antarmuka yang sama dan dapat diperlakukan sama. Ini adalah alasan paling umum untuk menggunakan pola pabrik dalam JavaScript.
7.3.2 Simpan Pengaturan Overhead
Jika objek harus kompleks dan relevan satu sama lain, menggunakan mode pabrik dapat mengurangi jumlah kode yang diperlukan untuk setiap objek. Efek ini sangat menonjol jika pengaturan ini hanya perlu dilakukan sekali untuk semua contoh jenis tertentu. Menempatkan kode pengaturan ini ke dalam konstruktor kelas bukanlah pendekatan yang efisien, karena bahkan jika pekerjaan pengaturan selesai, kode masih akan dieksekusi setiap kali contoh baru dibuat, dan melakukan hal itu akan mendistribusikan kode pengaturan ke dalam kelas yang berbeda. Metode pabrik sangat cocok untuk acara ini. Itu dapat diatur sekaligus sebelum instantiasi semua objek yang diperlukan. Tidak peduli berapa banyak kelas berbeda yang dipakai, metode ini dapat menyimpan kode pengaturan di satu tempat.
Ini sangat berguna jika kelas yang digunakan membutuhkan perpustakaan eksternal untuk dimuat. Metode pabrik dapat memeriksa perpustakaan ini dan secara dinamis memuat yang tidak ditemukan. Kode pengaturan ini ada di hanya satu tempat, jadi jauh lebih nyaman untuk memodifikasinya nanti.
7.3.3 Buat objek besar dengan banyak benda kecil
Metode pabrik dapat digunakan untuk membuat objek yang merangkum banyak objek yang lebih kecil. Pertimbangkan konstruktor objek sepeda. Sepeda berisi banyak subsistem yang lebih kecil: roda, bingkai, komponen transmisi, dan rem. Jika Anda tidak ingin kopling yang kuat antara subsistem dan objek yang lebih besar, tetapi ingin memilih dari banyak subsistem saat runtime, maka pendekatan pabrik adalah pilihan yang ideal. Menggunakan teknologi ini, suatu hari Anda dapat mencocokkan semua sepeda yang Anda jual dengan semacam rantai, dan jika Anda menemukan rantai favorit lain pada hari berikutnya, Anda dapat menggunakan varietas baru ini sebagai gantinya. Sangat mudah untuk mengimplementasikan perubahan ini karena konstruktor kelas sepeda ini tidak bergantung pada variasi rantai tertentu. Contoh pembaca RSS nanti dalam bab ini menunjukkan penggunaan model pabrik dalam hal ini.
Pola pabrik terutama menyediakan antarmuka untuk membuat objek. Model pabrik dibagi menjadi tiga kategori sesuai dengan istilah dalam "Java and Pattern":
1. Pabrik sederhana
2. Metode pabrik
3. Pabrik abstrak
Ketiga pola ini secara bertahap abstrak dari atas ke bawah dan lebih umum. Ada juga metode klasifikasi, yaitu menganggap model pabrik sederhana sebagai kasus khusus dari model metode pabrik, dan keduanya diklasifikasikan ke dalam kategori yang sama. Berikut adalah dua situasi di mana mode pabrik digunakan:
1. Saat menyandikan, Anda tidak dapat meramalkan contoh seperti apa yang perlu Anda buat.
2. Sistem tidak boleh bergantung pada detail tentang bagaimana instance kelas produk dibuat, digabungkan dan diekspresikan
3. Model Pabrik Sederhana
Seperti namanya, model ini sendiri sederhana dan digunakan dalam situasi di mana bisnis lebih sederhana.
Ini terdiri dari tiga peran (lihat diagram kelas di bawah ini untuk hubungan):
1. Peran pabrik: Ini adalah inti dari model ini, yang berisi logika bisnis dan logika penilaian tertentu. Di Java sering diimplementasikan oleh kelas konkret.
2. Peran Produk Abstrak: Umumnya kelas induk yang diwarisi oleh produk tertentu atau antarmuka yang diimplementasikan. Diimplementasikan oleh antarmuka atau kelas abstrak di Java.
3. Peran Produk Khusus: Objek yang dibuat oleh kelas pabrik adalah contoh dari peran ini. Diimplementasikan oleh kelas konkret di Java.
Jadi bagaimana cara menggunakan model pabrik sederhana? Izinkan saya memberi Anda contoh. Saya pikir ini jauh lebih mudah untuk dipahami daripada deskripsi teks teoretis yang panjang! Inilah perawatan untuk Nouveau Riche: P
Setelah menggunakan model pabrik sederhana, Nouveau Riche sekarang hanya perlu duduk di dalam mobil dan berkata kepada pengemudi: "mengemudi". Mari kita lihat bagaimana itu diimplementasikan:
// Peran Produk Abstrak Mobil Antarmuka Publik {public void drive (); } // Peran Produk Spesifik Kelas Publik Benz mengimplementasikan mobil {public void drive () {System.out.println ("Driving Benz"); }} kelas publik BMW mengimplementasikan mobil {public void drive () {System.out.println ("Mengemudi BMW"); }}. . . (Saya tidak akan menulis audi: p) // driver kelas kelas kelas kelas pabrik {// metode pabrik // Perhatikan bahwa jenis pengembalian adalah abstrak peran produk statis public static car driver (string s) melempar pengecualian {// juri logika, kembalikan peran produk spesifik ke klien jika (s.equalsignorecase ("benz")) mengembalikan benz baru (); lain jika (s.equalsignorecase ("bmw")) mengembalikan bmw baru (); ...... Lain lempar pengecualian baru (); . . . // Selamat datang Nouveau Riche untuk tampil ... KABU PUBLIK PUBLIK {public static void main (string [] args) {coba {// beri tahu pengemudi bahwa saya mengambil mobil Mercedes-Benz Car = driver.drivercar ("benz"); // Berikan perintah: drive (); . .Jika Anda menempatkan semua kelas dalam satu file, jangan lupa bahwa hanya satu kelas yang dinyatakan publik. Hubungan antara kelas dalam suatu program adalah sebagai berikut:
Ini adalah model pabrik sederhana. Inilah manfaatnya:
Pertama -tama, setelah menggunakan model pabrik sederhana, program kami tidak "sakit" dan lebih sesuai dengan kenyataan; dan klien dibebaskan dari tanggung jawab untuk secara langsung membuat objek produk, tetapi hanya bertanggung jawab untuk "mengonsumsi" produk (seperti yang dilakukan Nouveau Riche).
Mari kita analisis model pabrik sederhana dari prinsip pembukaan dan penutupan. Ketika Nouveau Ricree menambahkan mobil, asalkan memenuhi kontrak yang diformulasikan oleh produk abstrak, itu dapat digunakan oleh pelanggan selama diberitahukan ke pabrik. Jadi untuk bagian produk, itu sesuai dengan prinsip pembukaan dan penutupan - pembukaan untuk ekspansi dan penutupan untuk modifikasi; Tetapi bagian pabrik tampaknya tidak ideal, karena setiap kali sebuah mobil ditambahkan, logika bisnis yang sesuai dan logika penilaian harus ditambahkan ke kelas pabrik, yang secara alami melanggar prinsip pembukaan dan penutupan.
Untuk kelas pabrik seperti itu (dalam kasus kami untuk pengemudi), kami menyebutnya kelas Yang Mahakuasa atau kelas Tuhan.
Contoh yang kami berikan adalah kasus paling sederhana, dan dalam aplikasi praktis, ada kemungkinan bahwa produk tersebut adalah struktur pohon multi-level. Karena hanya ada satu kelas pabrik dalam model pabrik sederhana yang sesuai dengan produk -produk ini, ini dapat merusak kelas Tuhan kita dan pada gilirannya menghabiskan programmer kami yang cantik :(
Seperti yang saya sebutkan sebelumnya, model pabrik sederhana cocok untuk situasi di mana bisnis akan sederhana. Tetapi mungkin tidak terlalu mudah beradaptasi dengan lingkungan bisnis yang kompleks. Ini harus dilakukan dengan model metode pabrik! Lai
4. Model Metode Pabrik
Mari kita lihat komposisinya terlebih dahulu:
1. Abstrak Peran Pabrik: Ini adalah inti dari pola metode pabrik, tidak ada hubungannya dengan aplikasi. Ini adalah antarmuka yang harus diterapkan oleh peran pabrik tertentu atau kelas induk yang harus diwariskan. Di Java diimplementasikan oleh kelas abstrak atau antarmuka.
2. Peran pabrik spesifik: berisi kode yang terkait dengan logika bisnis tertentu. Dipanggil oleh aplikasi untuk membuat objek produk spesifik yang sesuai. Di Java diimplementasikan oleh kelas konkret.
3. Peran Produk Abstrak: Ini adalah kelas induk yang diwarisi oleh produk tertentu atau antarmuka yang diimplementasikan. Di Java, umumnya ada kelas atau antarmuka abstrak untuk mengimplementasikannya.
4. Peran Produk Khusus: Objek yang dibuat oleh peran pabrik tertentu adalah contoh dari peran ini. Diimplementasikan oleh kelas konkret di Java.
Gunakan diagram kelas untuk secara jelas mewakili hubungan di antara mereka:
Mari kita gunakan contoh lengkap untuk melihat bagaimana berbagai peran dalam model pabrik dikoordinasikan. Berbicara tentang bisnis Nouveau Riche, semakin banyak mobil yang mereka sukai. Ini membuat pengemudi menderita. Dia harus mengingat dan memelihara mobil apa pun, dan dia harus menggunakannya! Jadi Nouveau Riche bersimpati dengannya dan berkata: Itu tergantung pada tahun -tahun Anda dengan saya, Anda tidak akan harus bekerja begitu keras di masa depan. Saya akan memberi Anda beberapa anggota staf, jaga saja! Oleh karena itu, manajemen model metode pabrik muncul. Kodenya adalah sebagai berikut:
// Peran produk abstrak, peran produk spesifik mirip dengan model pabrik sederhana, tetapi mereka menjadi sedikit lebih rumit, berikut ini sedikit dihilangkan. // Abstrak Peran Pabrik Pengemudi Antarmuka Publik {Public Car DriverCar (); } kelas publik Benzdriver mengimplementasikan driver {driver car publik () {return new benz (); }} kelas publik BMWDriver mengimplementasikan driver {Public Car DriverCar () {return baru bmw (); }} ....... Mobil mobil = driver.drivercar (); car.drive (); } catch (Exception e) {}}}Metode pabrik menggunakan peran pabrik abstrak sebagai inti alih -alih menggunakan kelas konkret sebagai inti dalam pola pabrik sederhana. Mari kita lihat apa yang dibawa oleh model metode pabrik? Gunakan prinsip pembukaan dan penutupan untuk menganalisis model metode pabrik. Ketika produk baru (mis., Mobil Nouveau Riche) dihasilkan, selama dihasilkan sesuai dengan kontrak yang disediakan oleh peran produk abstrak dan peran pabrik abstrak, dapat digunakan oleh pelanggan tanpa harus memodifikasi kode yang ada. Tampaknya model metode pabrik sepenuhnya sejalan dengan prinsip pembukaan dan penutupan!
Menggunakan model pendekatan pabrik sudah cukup untuk mengatasi sebagian besar kebutuhan bisnis yang mungkin kita temui. Namun, ketika ada banyak jenis produk, sejumlah besar kategori pabrik yang sesuai akan muncul, yang seharusnya tidak seperti yang kita harapkan. Jadi saya sarankan menggunakan pola pabrik sederhana dalam hal ini dikombinasikan dengan pola metode pabrik untuk mengurangi kelas pabrik: yaitu, menggunakan pola pabrik sederhana untuk spesies serupa pada pohon produk (biasanya yang merupakan saudara di daun pohon).
Tentu saja, keadaan khusus perlu diperlakukan dengan perlakuan khusus: untuk pohon produk yang berbeda dalam sistem dan ada keluarga produk di pohon produk, maka dalam hal ini, model pabrik abstrak dapat digunakan.
5. Ringkasan
Mari kita lihat inspirasi yang diberikan oleh model pabrik sederhana dan model metode pabrik:
Jika kita tidak menggunakan pola pabrik untuk mengimplementasikan contoh kita, mungkin kode akan jauh lebih sedikit - cukup terapkan mobil yang ada, tanpa menggunakan polimorfisme. Tetapi dalam hal pemeliharaan, skalabilitas sangat buruk (Anda dapat membayangkan kelas yang ingin Anda sentuh setelah menambahkan mobil). Oleh karena itu, untuk meningkatkan skalabilitas dan pemeliharaan, ada baiknya menulis lebih banyak kode.
6. Pola Pabrik Abstrak
Pertama -tama mari kita pahami apa itu keluarga produk: keluarga produk yang terdiri dari fungsi yang terletak di berbagai hierarki dan struktur produk. Jika Anda dapat dengan jelas memahami konsep ini hanya dengan membaca kalimat ini, saya harus mengagumi Anda. Mari kita gunakan contoh untuk menggambarkannya dengan jelas.
BMWCAR dan Benzcar dalam gambar adalah dua pohon produk (hierarki produk); Sementara Benzsportscar dan BMWSportScar seperti yang ditunjukkan pada gambar adalah satu keluarga produk. Mereka semua dapat ditempatkan di keluarga mobil sport, sehingga fungsinya terkait. Demikian pula, BMWBusSinessCar dan Benzsportscar juga merupakan keluarga produk yang sama.
Kembali ke topik model produk abstrak, dapat dikatakan bahwa perbedaan antara itu dan model metode pabrik terletak pada kompleksitas kebutuhan untuk membuat objek. Selain itu, model pabrik abstrak adalah yang paling abstrak dan umum di antara ketiganya. Tujuan dari pola pabrik abstrak adalah untuk menyediakan antarmuka kepada klien untuk membuat objek produk dalam berbagai keluarga produk. Selain itu, kondisi berikut harus dipenuhi saat menggunakan pola pabrik abstrak:
1. Ada banyak keluarga produk dalam sistem, dan sistem hanya dapat mengkonsumsi salah satu produk sekaligus.
2. Gunakan produk milik keluarga produk yang sama.
Mari kita lihat berbagai peran dari pola pabrik abstrak (sama persis dengan metode pabrik):
Abstrak Peran Pabrik: Ini adalah inti dari pola metode pabrik, tidak ada hubungannya dengan aplikasi. Ini adalah antarmuka yang harus diterapkan oleh peran pabrik tertentu atau kelas induk yang harus diwariskan. Di Java diimplementasikan oleh kelas abstrak atau antarmuka.
Peran pabrik spesifik: Ini berisi kode yang terkait dengan logika bisnis tertentu. Dipanggil oleh aplikasi untuk membuat objek produk spesifik yang sesuai. Di Java diimplementasikan oleh kelas konkret.
Peran Produk Abstrak: Ini adalah kelas induk atau antarmuka implementasi dari pewarisan produk tertentu. Di Java, umumnya ada kelas atau antarmuka abstrak untuk mengimplementasikannya.
Peran Produk Khusus: Objek yang dibuat oleh peran pabrik tertentu adalah contoh dari peran ini. Diimplementasikan oleh kelas konkret di Java.
Setelah membaca dua mode pertama, saya harus memiliki gagasan yang jelas tentang koordinasi antara berbagai karakter dalam mode ini, jadi saya tidak akan memberikan contoh spesifik. Hanya saja Anda harus memperhatikan untuk memenuhi persyaratan untuk menggunakan model pabrik abstrak, jika tidak, bahkan jika ada beberapa pohon produk, masih ada keluarga produk, tetapi mereka tidak dapat digunakan.
Artikel di atas memiliki pemahaman yang mendalam tentang tiga model pabrik Java. Ini semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.