Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée du code spécifique pour implémenter le modèle de fabrique abstraite en Java

黄舟
Libérer: 2017-03-18 10:49:56
original
1968 Les gens l'ont consulté

Modèle d'usine abstraite

Il contient plusieurs concepts : Usine abstraite, Entity Factory, Produit abstrait, Produit d'entité

Usine abstraite : Définir des méthodes abstraites pour créer des produits

Usine d'entité : Plus précisément, quel type de produit créer

Produit abstrait : Une interface ou une classe de base

Produit d'entité : Implémenter des fonctions spécifiques ou dériver

Diagramme de classes


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

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

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

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

	@Override
	public void show() {
		super.show();
		System.out.println("这是产品2下的:产品B");
	}
}
Copier après la connexion
//抽象工厂 创建不同的抽象产品
public interface IFactory {
	public IProduct1 createProduct1A();//1类产品 型号A
	public IProduct1 createProduct1B();//1类产品 型号B
	public IProduct2 createProduct2A();//2类产品 型号A
	public IProduct2 createProduct2B();//2类产品 型号B
}
Copier après la connexion
//实体工厂 创建实体产品,返回类型为抽象产品
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();
	}
}
Copier après la connexion
/*
 * 抽象工厂模式:用来创建一组相关或者相互依赖的对象
 * 
 * 流程:抽象工厂,实体工厂		生产产品
 * 		抽象产品,实体产品		实现产品功能
 * 缺点:当需要增加一个产品(由抽象和实体构成),工厂都需要更改
 */
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();
	}
}
Copier après la connexion

Articles connexes :

Modèle de conception JAVA - Modèle d'usine abstrait

Modèle d'usine simple PHP, modèle de méthode d'usine et abstrait Comparaison de modèles d'usine

Développement orienté objet PHP - modèle d'usine abstrait

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal