ringkasan
Pola desain adalah seni. Jika Anda benar -benar memahami seni ini, Anda akan menemukan bahwa dunia akan menjadi lebih indah.
definisi
Tentukan antarmuka untuk membuat objek, biarkan subkelasnya memutuskan kelas mana yang akan disesuaikan
Gunakan skenario
Di mana saja Anda menggunakan objek yang kompleks, Anda dapat menggunakan mode pabrik
UML
1. Pabrik abstrak
Abstrak Pabrik: Kita semua tahu bahwa pabrik umumnya hanya memiliki satu fungsi, yaitu, produksi, misalnya, Geely Automobile Factory, yaitu, Geely Automobile, produsen ponsel iPhone, dll. Jadi dapat diringkas dengan cara yang sederhana, yaitu, create ();
2. Pabrik Mobil Mobil Spesifik
Pabrik Pabrikan Otomotif Khusus: Menyadari pabrik abstrak, dengan proses dan metode aktual untuk manufaktur mobil, dll.
3. Mobil abstrak
Mobil Abstrak: Kami umumnya tahu bahwa mobil dapat menjalankan, bermain musik, menavigasi, dan giliran adalah fitur umum dari mobil.
4. Mobil tertentu
Mobil Abstrak: Mobil beton mewujudkan mobil abstrak dan memiliki semua fungsinya. Tentu saja, mobil yang berbeda mungkin memiliki fungsi yang berbeda.
Pendahuluan singkat di atas pada dasarnya adalah bahwa pabrik mobil spesifik memproduksi mobil yang sesuai, seperti pabrik Audi, pabrik Volkswagen, mobil Volkswagen, dll.
Demo kode
Kami telah memahami dengan jelas hubungan di antara mereka di atas, jadi kami akan menggunakan kode untuk menunjukkan ide dan logika kami di atas dalam kode:
(1) Pabrik mobil abstrak
Paket com.zengtao.demo.factory;/*** Abstrak pabrik*/kelas public class carfactory {public abstract <t extends car> t createCar (class <t> cla);}(2) Pabrik mobil spesifik
Paket com.zengtao.demo.factory;/*** Audi factory*/kelas publik Audifactory memperluas carfactory {@suppresswarnings ("uncecked") @override public <extends car> t createCar (kelas <t> cla) {mobil mobil = null; coba {car = (car) class.forname (cla.getName ()). newInstance (); } catch (Exception e) {E.PrintStackTrace (); } return (t) mobil; }}(3) mendefinisikan mobil abstrak
paket com.zengtao.demo.factory; Public Abstract Class Car {public abstrak void drive (); abstrak publik void selfnagive (); public abstrak void playmusic ();}(4) mobil tertentu
(Audi Q3)
Paket com.zengtao.demo.factory; kelas publik audiq3car memperluas audicar {@override public void drive () {System.out.println ("Audiq3Car telah berhasil diproduksi"); System.out.println ("drive audiq3car"); } @Override public void selfnagive () {System.out.println ("Audiq3car SelfNagive"); } @Override public void playMusic () {System.out.println ("Audiq3car SelfNagive"); } @Override public void playmusic () {System.out.println ("Audiq3car playmusic"); System.out.println (""); }}(Audi Q5)
Paket com.zengtao.demo.factory; kelas publik audiq5car memperluas audicar {@override public void drive () {System.out.println ("Audiq5car telah berhasil diproduksi"); System.out.println ("Audiq5Car Drive"); } @Override public void selfnagive () {System.out.println ("Audiq5car SelfNagive"); } @Override public void playMusic () {System.out.println ("Audiq5car SelfNagive"); } @Override public void playmusic () {System.out.println ("Audiq5car playmusic"); System.out.println (""); }}(5) Panggilan
Paket com.zengtao.demo; import com.zengtao.demo.factory.audifactory; import com.zengtao.demo.factory.audiq3car; com.zengtao.demo.factory.audiq5car; Kelas publik {public static void void publik (string [] [] {audifacory / audif facory (public class {public static void void publik (string [] [] {public class main {public static void void void public static [string [] Audifactory (); // Gunakan pabrik untuk membuat mobil Q3 audiq3car audiq3car = audiofactory.createCar (audiq3car.class); // Gunakan pabrik untuk membuat mobil Q5 Audiq5car audiq5car = audifactory.createCar (audiq5car.class); // Mulailah mengemudi dan mainkan musik audiq3car.drive (); audiq3car.playmusic (); audiq5car.drive (); audiq5car.playmusic (); }}(6) Hasil
Adapun yang di atas, metode pabrik digunakan untuk mewujudkan proses sederhana pembuatan mobil.
Poin pertama:
Di pabrik abstrak, kita melihat bahwa metode createCar (kelas CLA), mengapa kita mendefinisikannya seperti ini? Gunakan refleksi untuk membuat mobil tertentu. Dengan cara ini, berbagai jenis mobil kami hanya membutuhkan kondisi yang sesuai, dapatkah mereka diproduksi? Jadi bermanfaat untuk menulis dengan cara ini, seperti banyak orang, Audi memiliki Q3, Q5, A4, A6, A7, A8 dan seri lainnya.
Poin kedua:
Jika kita memiliki mobil lain, seperti BMW, yang juga memiliki BMW X1, 320, X5, dll., Kita juga dapat mengimplementasikannya dengan sangat sederhana, cukup mengimplementasikan pabrik abstrak, dan kemudian mengimplementasikan mobil abstrak di mobil tertentu, dan ekspansi juga sangat nyaman.
Meringkaskan
Hampir waktunya untuk keluar dari pabrik abstrak di sini. Model metode pabrik adalah model desain yang relatif sederhana dan baik.
Tetapi ada juga kerugian, seperti: jika ada jenis mobil baru dan lainnya, Anda hanya perlu menerapkan pabrik abstrak dan mobil abstrak, dan kemudian membuat dua kelas baru
Tetapi jika itu bukan mobil, tetapi ponsel, maka Anda harus menulis semuanya, yang akan menyebabkan banyak kelas muncul, apakah akan mengadopsi model metode pabrik atau memutuskan berdasarkan kebutuhan.
Catatan: Jangan menerapkan pola desain demi desain. Tentu saja, pola metode pabrik juga umum digunakan, seperti: metode onCreate aktivitas, kami juga memuat dan menghasilkan antarmuka yang sesuai berdasarkan tata letak XML yang kami tentukan, dll.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.