Definisi: Menyediakan antarmuka untuk membuat serangkaian objek terkait atau saling bergantung tanpa menentukan kelas konkretnya.
Jenis: Buat Diagram Kelas Pola Kelas:
Perbedaan antara pola pabrik abstrak dan pola metode pabrik
Abstrak Factory Pattern adalah versi yang ditingkatkan dari pola metode pabrik, yang digunakan untuk membuat serangkaian objek terkait atau saling tergantung. Perbedaan antara itu dan model metode pabrik adalah bahwa model metode pabrik menargetkan struktur hierarki produk; sedangkan model abstrak pabrik menargetkan beberapa struktur hierarki produk. Dalam pemrograman, struktur produk biasanya bermanifestasi sebagai antarmuka atau kelas abstrak. Dengan kata lain, semua produk yang disediakan oleh model metode pabrik berasal dari antarmuka yang sama atau kelas abstrak, sedangkan produk yang disediakan oleh model pabrik abstrak berasal dari antarmuka atau kelas abstrak yang berbeda.
Dalam model pabrik abstrak, ada konsep keluarga produk: apa yang disebut keluarga produk mengacu pada keluarga produk yang terdiri dari produk terkait fungsional dalam hierarki produk yang berbeda. Serangkaian produk yang disediakan oleh model pabrik abstrak membentuk keluarga produk; Sementara serangkaian produk yang disediakan oleh metode pabrik disebut struktur hierarkis. Kami masih menggunakan contoh memproduksi mobil untuk menggambarkan perbedaan di antara mereka.
Dalam diagram kelas di atas, hatchback dan sedan disebut dua struktur hierarkis yang berbeda; Sementara 2.0 mobil perpindahan dan 2.4 mobil perpindahan disebut dua keluarga produk yang berbeda. Untuk lebih spesifik, hatchback 2,0-displacement dan hatchback 2,4-displacement milik struktur level yang sama, sedan 2,0-displacement dan sedan 2,4-displacement termasuk dalam struktur level lain; Sementara hatchback 2,0-displacement dan sedan 2,0-displacement milik keluarga produk yang sama, dan hatchback 2,4-displacement dan sedan 2,4-displacement milik keluarga produk lain.
Setelah Anda memahami konsep struktur hierarkis dan keluarga produk, Anda akan memahami perbedaan antara model metode pabrik dan model pabrik abstrak. Jika semua produk pabrik termasuk dalam struktur hierarkis yang sama, mereka termasuk dalam model metode pabrik; Jika produk -produk pabrik berasal dari berbagai struktur hierarkis, mereka termasuk dalam model pabrik abstrak. Dalam contoh ini, jika model pabrik menyediakan hatchback perpindahan 2.0 dan hatchback perpindahan 2.4, maka itu milik model metode pabrik; Jika model pabrik menyediakan dua produk, 2,4 Hatchback perpindahan dan sedan perpindahan 2.4, maka model pabrik ini adalah model pabrik abstrak, karena produk yang disediakannya milik dua struktur hierarkis yang berbeda. Tentu saja, jika sebuah pabrik menyediakan produk dari keempat model, karena produk tersebut termasuk dalam dua struktur hierarkis, itu pasti akan menjadi milik model pabrik abstrak.
Contoh
Mari kita lihat contoh kelas abstrak dari kelas pabrik:
Paket AbstractFactory; Kelas Abstrak Publik AbstractCreator {// Buat metode produk PUBLIK Abstrak Abstrak Abstrak Producta createProducta (); // Buat B Metode Produk Publik Abstrak Abstrak Abstrak ProductB CreateProductB ();}Kelas produk abstrak a
Paket AbstractFactory; Kelas Abstrak Publik Abstrak Producta {// Metode dibagikan dengan produk public void sharemethod () {System.out.println ("Metode pemrosesan logika bisnis dibagikan dengan produk ..."); } // metode sub-produk yang berbeda dari produk A dosomething abstrak abstrak publik (); }Kelas abstrak produk b
Paket AbstractFactory; kelas abstrak publik abstrak abstrak {// metode dibagikan oleh produk b public void sharemethod () {system.out.println ("Metode pemrosesan logika bisnis dibagikan oleh produk b ..."); } // sub-produk yang berbeda dari produk B public abstrak void dosomething (); } Paket Kelas Implementasi Pabrik AbstractFactory; Public Class Creator1 memperluas AbstractCreator {@Override public abstractproducta createProducta () {return new new producta1 (); } @Override public abstractproductb createProductB () {return new productB1 (); }} Paket Kelas Implementasi Pabrik Abstrak Factory; Public Class Creator2 memperluas AbstractCreator {@Override public abstractproducta createProducta () {return new producta2 (); } @Override public abstractproductB createProductB () {return new productB2 (); }}Produk A1
Paket AbstractFactory; Public Class Producta1 memperluas AbstractProducta {@Override public void dosomething () {System.out.println ("Metode pemrosesan logika bisnis dari Produk A1 ..."); }}Produk A2
Paket AbstractFactory; Public Class Producta2 memperluas AbstractProducta {@Override public void dosomething () {System.out.println ("Metode Pemrosesan Logika Bisnis Produk A2 ..."); }}Produk B1
Paket AbstractFactory; Public Class ProductB1 memperluas AbstractProductB {@Override public void dosomething () {System.out.println ("Metode pemrosesan logika bisnis B1 ..."); }}Produk B2
Paket AbstractFactory; Public Class ProductB2 memperluas AbstractProductB {@Override public void dosomething () {System.out.println ("Metode pemrosesan logika bisnis B2 ..."); }} Keuntungan dari pola pabrik abstrak
Selain memiliki keuntungan dari model metode pabrik, keuntungan terpenting dari model pabrik abstrak adalah bahwa ia dapat membatasi keluarga produk di dalam kelas. Keluarga produk yang disebut umumnya memiliki hubungan tertentu pada tingkat yang lebih besar atau lebih kecil. Model pabrik abstrak dapat mendefinisikan dan menggambarkan hubungan antara keluarga produk dalam kelas tanpa harus memperkenalkan kelas baru khusus untuk manajemen.
Kerugian dari pola pabrik abstrak
Memperluas produk keluarga akan menjadi tugas yang sangat melelahkan. Jika produk baru perlu ditambahkan ke keluarga produk, hampir semua kelas pabrik perlu dimodifikasi. Oleh karena itu, saat menggunakan model pabrik abstrak, pembagian struktur hierarki produk sangat penting.
Skenario yang berlaku
Pola pabrik abstrak dapat digunakan ketika objek yang akan dibuat adalah serangkaian keluarga produk yang saling terkait atau saling tergantung. Untuk membuatnya lebih jelas, dalam sistem warisan, jika ada beberapa struktur hierarkis (yaitu, ada beberapa kelas abstrak), dan ada korelasi atau kendala tertentu antara kelas implementasi yang dibagi menjadi setiap struktur hierarkis, model pabrik abstrak dapat digunakan. Lebih tepat untuk menggunakan beberapa pabrik independen untuk membuat produk jika tidak ada asosiasi atau kendala antara kelas implementasi di setiap hierarki.
Meringkaskan
Apakah itu model pabrik sederhana, model metode pabrik, atau model pabrik abstrak, mereka semua termasuk dalam model pabrik dan sangat mirip dalam bentuk dan karakteristik. Tujuan utama mereka adalah memisahkan diri. Saat menggunakannya, kita tidak perlu peduli apakah pola ini adalah metode pabrik atau model pabrik abstrak, karena evolusi di antara mereka seringkali sulit dipahami. Seringkali Anda akan menemukan bahwa ketika persyaratan baru datang, sedikit modifikasi dibuat dan metode baru ditambahkan, produk di kelas membentuk keluarga produk dalam struktur hierarkis yang berbeda, itu menjadi model pabrik abstrak; Dan untuk model pabrik abstrak, ketika metode dikurangi untuk membuat produk yang disediakan tidak lagi membentuk keluarga produk, ia berkembang menjadi model metode pabrik.
Oleh karena itu, saat menggunakan mode pabrik, Anda hanya perlu peduli apakah tujuan mengurangi kopling telah tercapai.