我有一个全局容器类:
final class Container
{
/**
* @return ForumThread
*/
public static function getForumThread()
{
if (self::$obj1 === null)
{
self::$obj1 = new ForumThread();
}
return self::$obj1;
}
/**
* @return ForumPosts
*/
public static function getForumPosts()
{
if (self::$obj2 === null)
{
self::$obj2 = new ForumPosts();
}
return self::$obj2;
}
}
我的模特:
class ForumThread
{
/**
* @return bool
*/
public function findBadLanguage ($inWhat)
{
return (bool)rand(0,1);
}
/**
* @return
*/
public function add ($threadName)
{
if (!$this->findBadLanguage ($threadName))
{
INSERT INTO
}
}
}
class ForumPost
{
/**
* @return
*/
public function post ($toThreadId, $comment)
{
// im talking about this:
Container::getForumThread()->findBadLanguage($comment);
}
}
我知道findBadLanguage()
应该在另一个班级,但我们可以假设这样。让我们关注Container :: get ****()调用。可以转向全局容器并从中获取对象吗?它不会影响得墨忒耳的法律吗? (那些对象必须只存在一次,并且可以进行DI-ed)
编辑:您可以将Container
视为工厂