为什么我们需要抽象工厂设计模式?

大部分定义说:

抽象工厂提供了一个界面,用于创建相关对象的族,而无需指定具体的类

抽象工厂模式的用途是什么,因为我们可以通过创建具体类本身的对象来实现任务。 为什么我们有一个创建Concrete类的对象的工厂方法?

请给我提供一些我必须实现abstractFactory模式的真实例子吗?


抽象工厂是依赖注入 (DI)的一个非常中心的设计模式。 下面是Stack Overflow问题列表,其中Abstract Factory的应用已被接受为解决方案。

据我所知,这些问题代表了人们真正关心的问题或问题,因此应该让您开始使用一些真实的例子:

  • 是否有初始化通过DI容器创建的对象的模式
  • 不能合并工厂/ DI
  • WCF依赖注入和抽象工厂
  • 当关键类需要Session(或其他特定于上下文的变量)时如何设置IoC
  • 如何根据最终用户配置值来解析类型?
  • 策略模式和使用Unity的依赖注入
  • IoC之上的抽象工厂模式?
  • 这是使用和测试使用工厂模式的类的正确方法吗?
  • DDD Book,Eric Evans:请解释“工厂应该抽象为所需类型而不是具体创建的类。”
  • DI容器,工厂还是新的临时对象?
  • 如何单元测试实例创建?
  • 什么是依赖注入用户输入的最佳策略?

  • 使用抽象工厂模式的一个实际例子是提供对两个不同数据源(例如SQL数据库和XML文件)的数据访问。 您有两个不同的数据访问类(数据存储的网关)。 两者都从定义要实现的常用方法的基类(例如,加载,保存,删除)继承。

    应使用哪个数据源不应改变客户端代码检索其数据访问类的方式。 您的抽象工厂知道应使用哪个数据源,并根据请求返回适当的实例。 工厂将此实例作为基类类型返回。


    如果我理解你是对的 - 问题是,为什么我们同时拥有Factory方法和抽象工厂模式。 当不同的多态类具有不同的实例化过程时,您需要抽象工厂。 并且您希望某个模块创建实例并使用它们,而无需了解对象初始化的任何细节。 例如 - 你想创建Java对象做一些计算。 但是其中一些是应用程序的一部分,而其他的字节码应该从数据库中读取。 另一方面 - 为什么我们需要工厂方法? 同意,抽象工厂与它重叠。 但是在某些情况下 - 编写代码要少得多,拥有更少的类和接口会使系统更易于理解。

    链接地址: http://www.djcxy.com/p/50119.html

    上一篇: Why do we need Abstract factory design pattern?

    下一篇: Factory, Abstract Factory and Factory Method