Artikel ini menjelaskan kasus konsumsi KFC yang diimplementasikan oleh Java menggunakan model pabrik abstrak. Bagikan untuk referensi Anda, sebagai berikut:
1. Definisi Pola
Pola pabrik abstrak menyediakan antarmuka untuk menciptakan keluarga objek terkait atau dependen tanpa menentukan kelas implementasi konkret.
Model pabrik abstrak memungkinkan pelanggan menggunakan antarmuka abstrak untuk membuat serangkaian produk terkait. Kelas pelanggan dan kelas pabrik dipisahkan. Ketika pelanggan membutuhkan produk apa pun, mereka hanya perlu meminta mereka dari pabrik. Pelanggan dapat memperoleh produk baru tanpa modifikasi.
2. Contoh model
1 analisis pola
Kami meminjam pemandangan ayah dan anak yang pergi ke toko KFC untuk mengkonsumsi untuk menggambarkan pola ini. Tangkapan layar setelah melakukan analisis abstrak adalah sebagai berikut
2 Pemodelan Statis Pola Pabrik Abstrak
3 contoh kode
3.1 Pembentukan makanan abstrak
Abstrak Makanan - AbstractBasefood
Paket com.demo.factory.model;/** * * kelas pangkalan makanan * * @author maofw * */kelas abstrak publik abstrakBasefood {// kategori jenis string yang dilindungi; // kuantitas yang dilindungi int num; // Harga harga pelampung yang dilindungi; // total float publik totalPrice () {return this.num * this.price; }}Antarmuka Makanan - Ifood
Paket com.demo.factory.model;/*** Antarmuka makanan abstrak** @author maofw**/antarmuka publik jika saya {/*** cetak informasi makanan*/void printmesage ();}3.2 Menetapkan kelas dasar abstrak untuk makanan yang berbeda
Hamburger Base Class - Hamburg
Paket com.demo.factory.model; /** * kelas dasar hamburg * @Author maofw * * /kelas abstrak publik hamburg memperluas abstrak abstrakbasefood mengimplementasikan IFOOD {public void printmesage () {System.out.println ("-" + this.kind + "bumbu hamburger, /torpice: torpice: torpice: ToFICE, /TRAYPICE, /THERPICE," THERPICE, " +" + This. ", /t total:" + this.totalPrice ()); }}Sayap ayam
Paket com.demo.factory.model; /** * Kelas Dasar Sayap Ayam * @Author Maofw * * /Kelas Publik Abstrak Kelas Chickenwings Memperluas Abstrakbasefood mengimplementasikan Ifood {public void printmesage () {System.out.println ("-" + This.kind + "Bau Ayam, /THE SYST.OUT.PRINTLN ("-" + This.kind +" Bau Chicken Wings, /T This. ", /t total:" + this.totalPrice ()); }}Kelas Pangkalan Prancis - Frenchfries
Paket com.demo.factory.model; /** * Kelas Basis Kentang Prancis * * @Author maofw * * /kelas abstrak publik Frenchfries memperluas abstrak abstrakbasefood mengimplementasikan IFOOD {public void printmesage () {System.out.println ("-" + This.kind + "Fries, /THeT. ", /t total:" + this.totalPrice ()); }}Beverage Base Class - Minuman
Paket com.demo.factory.model; /** * Minuman Kelas Pangkalan * @Author maofw * * /Kelas Public Abstrak Minuman Memperluas AbstrakBasefood mengimplementasikan IFOOD {public void printmesage () {System.out.println ("-" + this.kind + "Beverage, /T uniter." + Total: " + this.totalPrice ()); }}3.3 Buat makanan tertentu
Burger Kaki Ayam Pedas - Chinahanburm
Paket com.demo.factory.model.kfc; import com.demo.factory.model.hamburg;/** * Burger Kaki Ayam Pedas Bergaya Cina * * @Author Maofw * */Kelas Public @param Juara @para num ** NUPEM ** ** ** Metode BUMBURM * NUMANM * PUBERGUG @para {/** this.kind = "pedas"; this.price = 14.0f; this.num = num; }}Sayap Ayam Orleans - Chinachickickenwings
Paket com.demo.factory.model.kfc; import com.demo.factory.model.chickenwings;/** * Kelas Implementasi Sayap Ayam * * @Author Maofw * */Kelas Publik Chinachickenwings Memperluas Chickenwings {Public Chinachickickenwings (int num) {this.kind = "or" orleans {public chinachickickenwings (int num) {this.kind = "orLeans {public chinachickickenwings (int num) {this.kind =" this.price = 2.5f; this.num = num; }}Kentang goreng - chinafrenchfries
Paket com.demo.factory.model.kfc; import com.demo.factory.model.frenchfries;/** * Kelas Implementasi Fries Prancis * * @author maofw * */kelas publik chinafrenchfries meluas "nasional"; this.price = 8.0f; this.num = num; }}
Coke - ChinabEverage
Paket com.demo.factory.model.kfc; import com.demo.factory.model.beverage;/** * Kelas Implementasi Minuman * * @author maofw * */kelas publik chinabeverage memperluas minuman {public chinabeverage (int num) {this.kind = "cola"; this.price = 7.0f; this.num = num; }}3.4 Membangun pabrik
Buat pabrik KFC abstrak - IKFCFactory menghasilkan makanan abstrak
package com.demo.factory.itf;import com.demo.factory.model.Beverage;import com.demo.factory.model.ChickenWings;import com.demo.factory.model.FrenchFries;import com.demo.factory.model.Hamburg;/** * KFC abstract factory base class* * @author maofw * */public antarmuka ikfcfactory {// menghasilkan hamburger publik Hamburg CreateHamburg (int num); // memproduksi kentang goreng public frenchfries createFenchfries (int num); // memproduksi Chicken Wings Public Chickenwings CreateChickickenwings (int num); // menghasilkan minuman minuman publik createBeverage (int num);}Buat pabrik KFC tertentu - ChinakfcFactory untuk menghasilkan makanan tertentu
Paket com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; impor com.demo.factory.model.frenchfries; impor com.demo.factory.model.hamburg; com com.demo.factory Ikfcfactory {// memproduksi minuman publik kokas createBeverage (int num) {return new chinabeverage (num); } // Produce Orleans Roasted Chicken Wings Public Chickenwings CreateCrickickenwings (int num) {return new chinachickenwings (num); } // memproduksi FrenchFries createFrenchFries (int num) {return new chinafrenchfries (num); } // memproduksi burger kaki ayam pedas hamburg createhamburg (int num) {return new chinahanburm (num); }}3.5 Buat Kelas Pelanggan - Pelanggan
Paket com.demo.factory.custom; import com.demo.factory.itf.ikfcfactory; impor com.demo.factory.model.beverage; impor com.demo.factory.model.chickenwings; impor com.demo.factory.fodel.frfrfranchrypory; * Kelas Klien * * @Author Maofw * */Pelanggan Kelas Publik {// Abstrak Pabrik Privat IkfcFactory KfcFactory; // Metode konstruktor melewati pabrik abstrak sebagai parameter ke pelanggan publik (IKFCFactory kfcfactory) {this.kfcfactory = kfcfactory; } / *** Pesan makanan* / // pesan burger kaki ayam pedas float orderhamburg (int num) {// Dapatkan burger kaki ayam pedas hamburg hamburg = kfcfactory.createhamburg (num); // Output Informasi Pesanan Hamburg.Printmesage (); // mengembalikan total harga pengembalian hamburg.totalprice (); } // Pesan orleans panggang sayap ayam float public orderchickenwings (int num) {// dapatkan orleans panggang ayam sayap ayam chickenwings = kfcfactory.createCickickenwings (num); // output informasi pesanan chickenwings.printmesage (); // pengembalian harga total chickenwings.totalprice (); } // memesan fries public float orderfrenchfries (int num) {// get fries frenchfries frenchfries = kfcfactory.createFrenchfries (num); // Informasi Pesanan Output FrenchFries.Printmesage (); // pengembalian harga total pengembalian FrenchFries.totalPrice (); } // memesan kokas float public orderbeverage (int num) {// dapatkan minuman minuman coke = kfcfactory.createBeverage (num); // output informasi pesanan minuman.printmesage (); // mengembalikan total harga pengembalian harga.totalPrice (); }}3.6 tampilan alur cerita
Paket com.demo.factory; impor java.lang.management.managementfactory; impor java.net.httpurlconnection; impor java.net.url; impor java.net.urlconnection; impor java.net.urlconnection; impor java.sql; java.sql.preparedstatement; impor java.sql.sqlexception; impor java.text.numberformat; impor java.util.arrays; com.demo.factory.itf.chinakfcfactory; import com.demo.factory.itf.ikfcfactory; kelas publik MainApp { / ** * Metode aplikasi utama * * @param args * / public static Main (string [] args) { / ** * define a kfc (Ikfcory { / ** define a kfc (IKFCCORY Main Chinakfcfactory (); / *** Ayah dan Son berjalan ke KFC untuk mempersiapkan pesanan*/ Pelanggan = Pelanggan Baru (KFCFactory); / *** Mulailah memesan*/ // burger kaki ayam pedas float hamhurgmoney = customer.orderHamburg (1); // Empat sayap ayam panggang orleans mengapung chickenmoney = customer.orderchickenwings (4); // Satu bungkus kentang goreng mengapung FrenchFriesMoney = customer.orderfrenchfries (1); // Dua cangkir cola float beveragemoney = customer.orderBeverage (2); System.out.println ("Total:" + (Hamhurgmoney + Chickenwingsmoney + FrenchfriesMoney + Beveragemoney)); }}Hasil Menjalankan:
-Burger pedas, Harga Unit: 14.0, Kuantitas: 1, Total: 14.0
-Orleans Wings Wings, Harga Unit: 2.5, Kuantitas: 4, Total: 10.0
-Fries rasa, harga satuan: 8.0, kuantitas: 1, total: 8.0
-Cola Minuman, Harga Unit: 7.0, Kuantitas: 2, Total: 14.0
Total: 46.0
3. Prinsip -prinsip desain model ini
1 Gunakan lebih banyak kombinasi objek dan lebih sedikit warisan
2. Untuk pemrograman abstrak, bukan untuk pemrograman implementasi
3 objek produk dibuat melalui metode paparan pabrik
4. Gunakan kesempatan
1. Buat keluarga produk dan gunakan produk terkait bersama -sama;
2 ingin menyediakan pustaka produk dan hanya ingin menampilkan antarmuka alih -alih implementasi;
3 Saat menggunakan pabrik dalam kombinasi.
Untuk informasi lebih lanjut tentang algoritma java, pembaca yang tertarik dengan situs ini dapat melihat topik: "struktur data java dan tutorial algoritma", "ringkasan tips node dom java", "ringkasan file operasi java dan direktori" dan "ringkasan tip operasi java cache" tips java "tips java" Tips "Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.