静态是不好的,但是工厂模式呢?
我正在进行TDD项目,所以我尝试尽可能地坚持与这种开发相关的良好实践。其中之一是尽可能避免静态和全局。 我面临着这个问题:我有一个对象“文章”,可以将其链接到“选项”(附加的“微型文章”)。 我无法弄清楚如何拥有一种不会产生反效果或产生过多查询的好的方法,因为我将处于一种一切都分离的情况下,我基本上将需要对每个对象进行一次查询。 从我的实际角度来看,我看到3个选项: 1)构建内部文章: class Article { //[...] public function getArrOption(){ //Build an array of Options instance. //return an array of Options. } } 优点:直截了当 const:可维护性:article对象现在包含Option对象的构建逻辑。这可能会导致代码重复。 2)使用optionFactory class Article { //[...] public function getArrOption(){ return OptionFactory::buildFromArticleId($this->getId()); } } 优点:构建逻辑并非超出Article类 const:我违反了“静态很难模拟”的规则,这使得我的Article类很难测试。 3)分离所有逻辑。 //Build the array of Option instance in a …