我希望用PHP中的类“OzoneRequest”和“OzoneResponse”的用户停止创建对象。在OzoneApplication的构造函数中只创建了一个对象。我该怎么办?你可能理解我的问题
我不希望用户创建对象只创建一个只存在一个对象的对象。如果用户想要创建对象,则不会执行此操作...这将产生错误......
答案 0 :(得分:3)
class OzoneRequest
{
private static $instance = null;
private function __construct() { }
private function __clone() { }
public static function getInstance()
{
if (!isset(self::$instance)) {
self::$instance = new OzoneRequest();
}
return self::$instance;
}
}
class OzoneApplication
{
protected $req;
public function __construct()
{
$this->req = OzoneRequest::getInstance();
}
}
答案 1 :(得分:2)
创建一个私有构造函数,然后从类中的静态方法调用它来创建一个对象。另外,查找 singleton 设计模式。
答案 2 :(得分:1)
那就是Singleton的UseCase。
但是,我没有看到限制用户(读取:开发人员)如果他不想创建请求或响应对象的意义。即使从概念上讲,只有一个Request对象(这是可论证的;如果我需要针对远程服务分派多个请求,那么问题是:为什么你禁止开发人员更改你的代码?我是一个成年人。如果我想打破你的代码,让我打破它。