`

创建型设计模式--抽象工厂

阅读更多

抽象工厂模式(AbstractFactory)
   

    每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。


    产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。
每一个产品等级结构中有多少个具体的产品,就有多少个产品族,也就会在工厂等级结构中发现多少个具体工厂。

    一般而言,有多少个产品等级结构,就会在工厂角色中发现多少个工厂方法。


    具体工厂(工厂类)中有工厂方法(工厂类中的方法)


// 两种抽象产品(两个结构等级):水果、蔬菜
interface Fruit {
}

interface Veggie {
}

// 四种具体产品:北方水果,热带水果,北方蔬菜,热带蔬菜
// Northern Fruit
class NorthernFruit implements Fruit {
	private String name;

	NorthernFruit(String name) {
	}

	String getName() {
		return name;
	}

	void setName(String name) {
		this.name = name;
	}
}

// TropicalFruit
class TropicalFruit implements Fruit {
	private String name;

	TropicalFruit(String name) {
	}

	String getName() {
		return name;
	}

	void setName(String name) {
		this.name = name;
	}
}

// NorthernVeggie
class NorthernVeggie implements Veggie {
	private String name;

	NorthernVeggie(String name) {
	}

	String getName() {
		return name;
	}

	void setName(String name) {
		this.name = name;
	}
}

// TropicalVeggie
class TropicalVeggie implements Veggie {
	private String name;

	TropicalVeggie(String name) {
	}

	String getName() {
		return name;
	}

	void setName(String name) {
		this.name = name;
	}
}

// 抽象工厂角色
public interface Gardener {
	public Fruit createFruit(String name);

	public Veggie createVeggie(String name);
}

// 具体工厂角色:北方工厂,热带角色
class NorthernGardener implements Gardener {
	Fruit createFruit(String name) {
		return new NorthernFruit(name);
	}

	Veggie createVeggie(String name) {
		return new NorthernVeggie(name);
	}
}

class TropicalGardener implements Gardener {
	Fruit createFruit(String name) {
		return new TropicalFruit(name);
	}

	Veggie createVeggie(String name) {
		return new TropicalVeggie(name);
	}
}

class TestApp {
	private void test() {
		Veggie tv, nv;
		Fruit tf, nf;
		TropicalGardener tg = new TropicalGardener();
		NorthernGardener ng = new NorthernGardener();
		tv = tg.createVeggie("热带菜叶");
		nv = ng.createVeggie("东北甜菜");
		tf = tg.createFruit("海南椰子");
		nf = ng.createFruit("雪梨");
	}

	public static void main(String args[]) {
		TestApp test = new TestApp();
		test.test();
	}
}

 

  • 大小: 26.8 KB
分享到:
评论

相关推荐

    创建型设计模式----抽象工厂模式

    抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...

    设计模式--抽象工厂模式实现多数据库连接

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...

    设计模式 - 抽象工厂模式

    抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际产出的具体产品是什么。 在...

    设计模式----抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需了解它们的具体实现。在Java或其他面向...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“族”,即一系列相关的对象。在抽象工厂模式中,我们创建一个抽象工厂接口,然后为每一种具体...

    设计模式--抽象工厂

    "抽象工厂"是设计模式中的一种,属于创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这个模式的核心在于隔离了产品对象的创建过程,使得系统对具体产品的依赖最小化,从而增强了系统的灵活性和...

    java常用设计模式-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式...

    java设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...

    设计模式-抽象工厂模式javademo

    抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...

    Java设计模式-抽象工厂

    抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这个模式使代码能够独立于实际的产品实现,增强了代码的可扩展性和灵活性。 ### **1. 模式概念** 抽象...

    设计模式--抽象工厂之小解

    抽象工厂(Abstract Factory)设计模式是其中的一种创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪些类。这种类型的设计模式属于 creational patterns,因为它是关于创建对象的。 **一、抽象工厂...

    设计模式之-抽象工厂-AbstractFactory

    抽象工厂(Abstract Factory)设计模式是软件工程中一种重要的创建型设计模式,它提供了一种创建对象组的方式,这些对象属于同一族系并且彼此相关。这个模式的主要目标是定义一个接口,用于创建一族相关或相互依赖的...

    从哲学角度学习设计模式-抽象工厂

    在众多设计模式中,“抽象工厂”(Abstract Factory)模式是一种创建型模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不必指定它们的具体类。这一模式深受哲学的影响,特别是“形而上学”的概念,探讨了...

    设计模式-抽象工厂-Java 源码

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而具体的对象族由子类决定。这种模式允许系统在不指定具体产品的前提下,能够创建一系列相关或相互依赖的对象,同时避免了硬编码所造成的...

    iOS设计模式-抽象工厂

    本篇主要探讨的是“抽象工厂”设计模式,这是一种创建型设计模式,它提供一个接口用于创建相关或依赖对象的家族,而无需指定具体类。 抽象工厂模式的核心概念是“工厂”,它不直接生产产品,而是提供一个创建产品的...

    酒店管理系统--c#抽象工厂设计模式!

    抽象工厂设计模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而无需指定它们的具体类。在酒店管理系统中,这个模式可能被用来创建与不同数据库系统(如Sqlserver2005)交互的对象,...

    c++设计模式-工厂方法模式

    工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

Global site tag (gtag.js) - Google Analytics