cari
RumahJavajavaTutorialJava 实现抽象工厂模式的具体代码详解

抽象工厂模式

里面有几个概念:抽象工厂实体工厂抽象产品实体产品

抽象工厂:定义创建产品的抽象方法

实体工厂:具体的创建哪种产品

抽象产品:一个接口或基类

实体产品:实现具体功能,或派生

类图


//抽象产品1
public interface IProduct1 {
	public void show();
}
//抽象产品2
public interface IProduct2 {
	public void show();
}
//实体产品1
public class Product1 implements IProduct1 {  
    public void show() {  
        System.out.println("创建了1型产品");  
    }  
}
//实体产品2
public class Product2 implements IProduct2 {
	public void show() {
		System.out.println("创建了2型产品");
	}
}
/*
 * 1A 1B属于Product1 同一产品等级结构中
 * 2A 2B属于Product2
 */
public class GradeProduct1A extends Product1 {

	@Override
	public void show() {
		super.show();
		System.out.println("这是产品1下的:产品A");
	}
	
}
public class GradeProduct1B extends Product1 {

	@Override
	public void show() {
		super.show();
		System.out.println("这是产品1下的:产品B");
	}
}
public class GradeProduct2A extends Product2 {

	@Override
	public void show() {
		super.show();
		System.out.println("这是产品2下的:产品A");
	}
}
public class GradeProduct2B extends Product2 {

	@Override
	public void show() {
		super.show();
		System.out.println("这是产品2下的:产品B");
	}
}
//抽象工厂 创建不同的抽象产品
public interface IFactory {
	public IProduct1 createProduct1A();//1类产品 型号A
	public IProduct1 createProduct1B();//1类产品 型号B
	public IProduct2 createProduct2A();//2类产品 型号A
	public IProduct2 createProduct2B();//2类产品 型号B
}
//实体工厂 创建实体产品,返回类型为抽象产品
public class Factory implements IFactory {

	public IProduct1 createProduct1A() {
		return new GradeProduct1A();
	}

	public IProduct1 createProduct1B() {
		return new GradeProduct1B();
	}

	public IProduct2 createProduct2A() {
		return new GradeProduct2A();
	}

	public IProduct2 createProduct2B() {
		return new GradeProduct2B();
	}
}
/*
 * 抽象工厂模式:用来创建一组相关或者相互依赖的对象
 * 
 * 流程:抽象工厂,实体工厂		生产产品
 * 		抽象产品,实体产品		实现产品功能
 * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改
 */
public class Test4Abstract {
	public static void main(String[] args) {
		IFactory factory = new Factory();
		IProduct1 product1a = factory.createProduct1A();
		product1a.show();
		IProduct1 product1b = factory.createProduct1B();
		product1b.show();
		
		IProduct2 product2a = factory.createProduct2A();
		product2a.show();
		IProduct2 product2b = factory.createProduct2B();
		product2b.show();
	}
}

相关文章:

JAVA设计模式之抽象工厂模式

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

php面向对象开发之——抽象工厂模式

Atas ialah kandungan terperinci Java 实现抽象工厂模式的具体代码详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa