`

设计模式回顾之十一:抽象工厂模式(Abstract Factory)

 
阅读更多

设计模式回顾系列文章:主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。

------------------------------------------------

抽象工厂模式(Abstract Factory)

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

适用于:

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

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

当你要强调一系列相关的产品对象的设计以便进行联合使用时。 

当你提供一个产品类库,而只想显示它们的接口而不是实现时。 

 

程序实现:

抽象类:

public abstract class DPDocument {
	abstract public void dump();
}
public abstract class DPWorkspace {
	abstract public void dump();
}
public abstract class DPView {
	abstract public void dump();
}

抽象工厂类:

public abstract class DPFactory {
	abstract public DPDocument createDocument();
	abstract public DPView createView();
	abstract public DPWorkspace createWorkspace();
}

构建:

public abstract class DPApplication {
	protected DPDocument doc;
	protected DPWorkspace workspace;
	protected DPView view;
	
	public void constructObjects(DPFactory factory){
		doc = factory.createDocument();
		workspace = factory.createWorkspace();
		view = factory.createView();
	}
	
	abstract public void dump();

	public void dumpState(){
		if (doc != null) doc.dump();
		if (workspace != null) workspace.dump();
		if (view != null) view.dump();
	}
}

实现类:

public class MyDocument extends DPDocument{
	public MyDocument(){
		System.out.println("in MyDocument constructor");			
	}
	@Override
	public void dump(){
		System.out.println("MyDocument exists");
	}
}
public class MyWorkspace extends DPWorkspace{
	public MyWorkspace(){
		System.out.println("in MyWorkspace constructor");			
	}
	@Override
	public void dump(){
		System.out.println("MyWorkspace exists");
	}
}
public class MyView extends DPView{
	public MyView(){
		System.out.println("in MyWorkspace constructor");			
	}
	@Override
	public void dump() {
		System.out.println("MyView exists");
	}
}

具体工厂:

public class MyFactory extends DPFactory{
	@Override
	public DPDocument createDocument() {
		return new MyDocument();
	}
	@Override
	public DPView createView() {
		return new MyView();
	}
	@Override
	public DPWorkspace createWorkspace() {
		return new MyWorkspace();
	}
}

使用具体工厂创建:

public class MyApplication extends DPApplication{
	MyFactory myFactory = new MyFactory();
	@Override
	public void dump() {
		System.out.println("MyApplication exists");
	}
	public void createFamily(){
		myFactory = new MyFactory();
		constructObjects(myFactory);
	} 
}

客户端:

public static void main(String[] args) {
		MyApplication myApplication = new MyApplication();
		myApplication.createFamily();
		myApplication.dumpState();
		myApplication.dump();
}

 

抽象工厂模式,更新中...

 

 

 

分享到:
评论

相关推荐

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

    总之,"走进设计模式之抽象工厂"这篇博客深入探讨了抽象工厂模式的原理、实现方式、应用场景及其优缺点,旨在帮助读者理解并有效地运用这一设计模式。通过阅读博客和分析提供的代码示例,开发者可以更好地掌握抽象...

    (超详细,超易懂)设计模式(三):抽象工厂模式,灵山派系谁上位

    抽象工厂(AbstractFactory):定义了一组创建产品的抽象方法。 具体工厂(ConcreteFactory):实现了抽象工厂定义的抽象方法,用于创建具体产品的实例。 抽象产品(AbstractProduct):定义了产品的抽象方法。 具体...

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

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

    设计模式C++学习之抽象工厂模式(AbstractFactory)

    抽象工厂模式是设计模式中的一种结构型模式,它在C++编程中有着广泛的应用。这个模式主要用于创建一系列相关的对象,而无需指定它们的具体类。在本文中,我们将深入探讨抽象工厂模式的概念、工作原理以及在C++中的...

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

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

    [创建型模式] 设计模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式的关键在于抽象工厂,它定义了一组创建对象的接口,允许子类决定实例化哪一个类。...

    .NET设计模式(3):抽象工厂模式(AbstractFactory)

    这就是我们要说的抽象工厂模式。提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。逻辑模型:物理模型:抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体...

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

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

    抽象工厂模式(Abstract factory)

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

    抽象工厂模式(Abstract Factory Pattern)

    ### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的...在需要创建一组相关联对象且这些对象具有一定的共通性时,抽象工厂模式是一种非常实用的设计模式。

    设计模式 之 “抽象工厂模式[Abstract Factory Pattern]”

    **抽象工厂模式(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式是当一个系统需要根据不同的平台或者环境来创建一组相关或相互依赖的对象时,...

    设计模式 - 抽象工厂模式

    * AbstractFactory:抽象工厂,定义了一个接口用于创建相关或依赖对象的家族。 * ConcreteFactory:具体工厂,继承AbstractFactory并实现了接口中的方法以创建具体的产品。 * AbstractProduct:抽象产品,定义了一个...

    抽象工厂模式abstractFactory

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

    抽象工厂模式(AbstractFactory)源代码

    设计模式抽象工厂模式(AbstractFactory)源代码

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

    此外,抽象工厂模式还可以与其他设计模式结合使用,比如工厂方法模式(Factory Method Pattern),在某些情况下,可以将抽象工厂模式的抽象工厂类设计为工厂方法模式,让子类决定实例化哪一个类。同时,抽象工厂模式...

    抽象工厂AbstractFactory

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

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。

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

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

Global site tag (gtag.js) - Google Analytics