首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解工厂方法模式

理解工厂方法模式
EN

Stack Overflow用户
提问于 2012-02-17 09:17:26
回答 3查看 264关注 0票数 2

我阅读工厂的方法模式,因为我有一些相关的问题,但我无法从核心理解它。如定义所述,这里

创建对象通常需要复杂的进程,而不适合包含在组合对象中。对象的创建可能导致代码的重大重复,可能需要组合对象无法访问的信息,可能无法提供足够的抽象级别,或者可能不是组合对象的关注点的一部分。

我可以理解重要代码重复的概念,但我无法理解其他概念,如它所述。

它可能需要合成对象无法访问的信息。

类如何包含不能通过组合对象访问的信息。据我所知,它可能是类的任何private数据成员。但是,如果有任何东西是private,那么对象创建过程是如何需要这些信息的?同样地,其他两点

它可能没有提供足够的抽象级别,或者可能不是组合对象的关注点的一部分。

有谁能不能在这里精确地描述这些,并展示我的一些代码内容,以便我能够理解这个概念。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-17 09:23:43

工厂模式的思想是动态创建加载类和创建新对象。它通常是作为静态类完成的(如这里,在正式的PHP文档中),但是一些框架使用工厂模式作为在MVC对象中加载对象的一种方式,例如,当您希望通过模型加载视图中的一些数据时。

工厂模式的理念是效率和资源管理。它只在尚未加载的情况下加载文件,并返回新创建的对象。

(请注意,PHP文档中的示例并不理想,最好检查类是否已定义,如果没有,则尝试包含文件,而不是使用include_once())。

票数 1
EN

Stack Overflow用户

发布于 2012-02-17 09:34:31

当在我们的对象中使用外部资源时,会想到创建它的其他方法:

  1. 使用其构造函数创建对象
  2. 要让另一个对象为我们的对象(工厂和工厂方法模式)创建它,.This方法我们的对象不知道如何创建外部资源,但是它应该知道应该由谁来请求它。(如果调用静态工厂方法,它需要保存对工厂的引用或者知道工厂的类型)
  3. 为了使用IoC (反转控制) container.This方式注入外部资源,我们的对象既不知道如何创建外部资源,也不知道由谁负责其creation.Actually,这种方法正在使工厂模式过时。
票数 1
EN

Stack Overflow用户

发布于 2012-02-21 21:29:37

假设您正在编写一个API,用户可以通过该API创建和使用某个对象。在内部,在API框架中,您希望在某些服务、侦听器、数据库中注册对象.

在这里,您有两种不同的处理情况的方法:

  • 您可以让用户创建对象并负责在应该公开的服务、侦听器和数据库中注册它(公共)。

  • 您希望提供一个公共工厂类,该类将创建给定参数的对象,并负责为您进行所有必要的初始化。

第二个场景是在您的系统中隐藏创建此类对象的所有复杂性的最佳方法。这还具有隐藏注册创建对象所需的服务、侦听器和数据库的巨大好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9325617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档