我正在阅读工厂方法模式,因为我有一些与之相关的问题,但我无法从核心理解它。根据定义,here
创建对象通常需要复杂的过程 适合包含在作曲对象中。对象的 创建可能会导致严重的代码重复,可能需要 组成对象无法访问的信息可能不提供 足够的抽象水平,或者可能不是其中的一部分 撰写对象的问题。
我可以理解重要代码重复的概念,但我无法理解其他概念,例如它陈述
可能需要编写对象无法访问的信息
一个类如何包含组合对象无法访问的信息。据我所知,它可能是该类的任何private
数据库。但是,如果有任何事情是private
那么对象创建过程如何需要这些信息?同样地,其他两点
它可能无法提供足够的抽象级别,或者可能不会成为撰写对象关注的一部分。
任何身体都可以在这里准确地描述这些并展示我的一些代码,以便我能理解这个概念
答案 0 :(得分:1)
工厂模式的想法是创建加载类并动态创建新对象。通常它是作为静态类(例如官方PHP文档中的here)完成的,但是一些框架使用工厂模式作为在MVC对象中加载对象的方式,例如当您想要加载某些数据时通过模型来看。
工厂模式的想法是效率和资源管理。它仅在尚未加载文件时加载文件并返回新创建的对象。
(请注意,PHP文档中的示例并不理想,最好检查是否已定义类,如果没有,则尝试包含该文件而不是使用include_once())
答案 1 :(得分:1)
当在我们的对象中使用外部资源时,会想到其创建的替代方案:
答案 2 :(得分:1)
想象一下,您正在编写一个API,用户可以通过该API创建和使用某个对象。在内部,在API框架中,您希望在某些服务,侦听器,数据库中注册您的对象......
在这里,您有两种不同的方法来处理这种情况:
OR
第二种方案是隐藏在系统中创建此类对象的所有复杂性的最佳方法。这也隐藏了注册创建对象所需的服务,监听器和数据库。