`

Abstract Factory(抽象工厂)模式--对象创建型

阅读更多

Abstract Factory模式的意图:

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

我的理解:

抽象工厂定义了可以创建产品的种类,然后针对不同的需要使用不同的子工厂创建相应的产品!

实例:一个电脑硬件厂商要生产两种不同的硬盘和内存。

 

AbstractFactory.java

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public abstract class AbstractFactory {
	public abstract AbstractHardDisk getHardDisk();
	public abstract AbstractMemory getMemory();
}





AbstractHardDisk.java:

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public abstract class AbstractHardDisk {
	public abstract void textHardDisk();

}
class HardDiskA extends AbstractHardDisk{

	@Override
	public void textHardDisk() {
		System.out.println("硬盘A生产成功");
		
	}
}
class HardDiskB extends AbstractHardDisk{

	@Override
	public void textHardDisk() {
		System.out.println("硬盘B生产成功");
		
	}	
}




 AbstractMemeory.java:

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public abstract class AbstractMemory {
	public abstract void textMemory();

}
class MemoryA extends AbstractMemory{

	@Override
	public void textMemory() {
		System.out.println("内存A生产成功");
	}	
}
class MemoryB extends AbstractMemory{

	@Override
	public void textMemory() {
		System.out.println("内存B生产成功");
	}	
}





 AFactory.java:

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public class AFactory extends AbstractFactory{


	@Override
	public AbstractHardDisk getHardDisk() {
		// TODO Auto-generated method stub
		
		return new HardDiskA();
	}

	@Override
	public AbstractMemory getMemory() {
		// TODO Auto-generated method stub
		return new MemoryA();
	}

}





 BFactory.java:

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public class BFactory extends AbstractFactory{

	@Override
	public AbstractHardDisk getHardDisk() {
		// TODO Auto-generated method stub
		return new HardDiskB();
	}

	@Override
	public AbstractMemory getMemory() {
		// TODO Auto-generated method stub
		return new MemoryB();
	}
	

}





 Client.java:

/**
 * filename:Test.java
 * createtime:2011-4-8上午12:22:59
 * author:wustrive_2008
 * E-mail:wustrive_2008@126.com
 */
package com.gufengxiachen.designpatterns.abstractfactory;

public class Client {
	public static void main(String[] args) {
		AbstractFactory af=new BFactory();
		AbstractHardDisk hd= af.getHardDisk();
		AbstractMemory ma=af.getMemory();
		hd.textHardDisk();
		ma.textMemory();
	}
	
}





 

在以下情况下可以使用 抽象工厂:

一个系统要独立于它的产品的创建、组合和表示时。

一个系统要由多个产品系列中的一个来配置时。

只想显示产品的接口而非实现时

 

抽象工厂模式的优缺点:

优点:它分离了具体的类,它使得易于交换产品系列

缺点:难以支持新种类的产品


 



分享到:
评论

相关推荐

    李建忠 C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)

    **抽象工厂模式(Abstract Factory Pattern)是创建型设计模式之一,它提供了一种创建对象的接口,使得子类可以决定实例化哪一个类。这种类型的设计模式属于类的创建模式。** 在C#中,抽象工厂模式的核心在于抽象...

    抽象工厂模式--演示代码

    抽象工厂模式是设计模式中的一种,属于创建型模式。它提供了一个创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“家族”这个概念,即一系列相关的对象,它们可以相互协作以完成特定任务。在Java中,...

    创建型-抽象工厂模式(Abstract Factory)

    抽象工厂模式是设计模式中的一种,它属于对象创建型模式,主要解决的是当系统需要创建一组相关或相互依赖的对象时,而这些对象的类在运行时可能未知的问题。这种模式提供了一个接口,用于创建相关或依赖对象的家族,...

    C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)

    抽象工厂模式是面向对象设计模式中的一个创建型模式,它为创建一组相关或相互依赖的对象提供了一个接口,而无需指定它们的具体类。在C#中,这种模式的应用可以帮助我们实现跨平台、跨环境的代码,使得系统更具扩展性...

    C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) (Level 300)

    抽象工厂模式是面向对象设计模式中的创建型模式之一,它为创建一组相关或相互依赖的对象提供了一个统一的接口,使得客户端无需关注这些对象的具体实现细节。在C#中,抽象工厂模式的应用尤为广泛,尤其在多平台开发...

    20051115pm--C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)

    抽象工厂模式(Abstract Factory)是一种创建型设计模式,用于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这种模式的关键在于,它允许客户端代码与具体的实现细节解耦,使得添加新的产品...

    创建型模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,其主要目的是为了解耦客户端代码与具体产品的实现。在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象...

    AbstractFactory 抽象工厂

    抽象工厂(Abstract Factory)模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式允许客户端在不关心具体实现的情况下,使用一组相关或相互依赖的对象。在Java或...

    设计模式之抽象工厂模式-c++

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,提供一个接口用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这种模式常用于需要跨多个产品系列进行实例化的场景。 抽象工厂模式的...

    抽象工厂模式 - 代码(Java)

    抽象工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象集合的接口,而无需指定具体类。这种模式的关键在于,它允许在运行时创建一个产品家族,这些产品都属于同一类别,但可能有不同的实现。在Java中,...

    2 抽象工厂模式-课程内容.rar

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体类。这种模式的主要优点在于它允许系统独立于如何创建、组合和表示产品的方式,提供了更高层次的抽象,使得更换产品族或...

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

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

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

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

    设计模式 - 抽象工厂模式

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

    走进设计模式之抽象工厂(Abstract Factory)

    在众多设计模式中,抽象工厂(Abstract Factory)模式是一种创建型模式,它为创建一组相关或相互依赖的对象提供一个接口,而无需指定它们的具体类。这种模式允许客户端使用抽象接口与具体实现解耦,使得系统更易于...

    抽象工厂模式abstractFactory

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建对象集合的接口,而无需指定具体的产品类型。这种模式适用于当系统需要在不同平台或环境中创建一组相关或相互依赖的对象时,而这些...

    抽象工厂AbstractFactory

    抽象工厂(Abstract Factory)模式是一种创建型设计模式,它提供了一种创建对象的接口,但允许子类决定实例化哪一个类。这种模式是基于对象的抽象,而不是具体的类,因此,它允许创建一系列相关的对象,而无需指定...

    抽象工厂模式(Abstract factory)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在Java编程中,这种模式通常用于隔离客户端与具体实现之间的耦合,使得系统可以在不修改代码...

    设计模式-抽象工厂模式

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

Global site tag (gtag.js) - Google Analytics