php – 有一个工厂用于创建对象的好处?

前端之家收集整理的这篇文章主要介绍了php – 有一个工厂用于创建对象的好处?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力了解工厂的设计模式.

我不明白为什么在客户端和产品(客户想要的对象)之间有一个中间人是好的.

没有工厂的例子:

$mac = new Mac();

工厂的例子:

$appleStore = new AppleStore();
$mac = $appleStore->getProduct('mac');

工厂模式如何将客户与产品分离?

有人可以给出一个未来代码更改的例子,它将影响示例1的否定,但在示例2中是正面的,所以我理解解耦的重要性?

谢谢.

我认为这与构建某些类型的对象所需的资源有关.

非正式地说,如果你告诉某人建造一台Mac,这将是一个艰苦的过程,需要多年的设计,开发,制造和测试,而且可能做得不对.每个Mac都必须重复此过程.但是,如果你介绍一个工厂,所有的辛勤工作只能做一次,那么Mac可以更便宜地生产.

现在考虑Joomla的factory.php.据我所知,JFactory的主要目的是汇集对象并确保不会复制应该相同的对象.例如,JFactory :: getUser()将返回对一个且仅一个对象的引用.如果该用户对象中的某些内容发生了变化,它将随处出现.另请注意,JFactory :: getUser()返回引用,而不是新对象.这是你无法用构造函数做的事情.

通常,在构造对象时需要本地上下文,并且该上下文可能会持久存在并可能采用多种形式.例如,可能有一个MysqL数据库保存用户.如果使用构造函数创建User对象,则需要将Database对象传递给构造函数(或者让它依赖于全局变量).如果您决定将应用程序切换到Postgresql,则Database对象的语义可能会发生变化,从而导致需要检查构造函数的所有用法.全局变量让我们隐藏这些细节,工厂也是如此.因此,用户工厂会将构造User对象的细节与需要User对象的位置分离.

工厂什么时候有用?构造对象时涉及背景细节.什么时候构造者更好?当全局变量足够时.

猜你在找的PHP相关文章