Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 想知道好的OO模式吗_Php_Oop - Fatal编程技术网

Php 想知道好的OO模式吗

Php 想知道好的OO模式吗,php,oop,Php,Oop,我有一些代码示例 但我只想知道这个oo模式是好是坏,甚至它不是一个oo class Manager { private $_rule_manager = null; private $_approver_manager = null; private $_value = null; function __construct($v_value = null) { $this->_value = $v_value; }

我有一些代码示例

但我只想知道这个oo模式是好是坏,甚至它不是一个oo

class Manager 
{
    private $_rule_manager = null;
    private $_approver_manager = null;
    private $_value = null;
    function __construct($v_value = null)
    {
           $this->_value = $v_value;
    }
    public static function get_instance() 
    {
        if(self::$Instance === null) self::$Instance = new manager();
        return self::$Instance;
    }
    public static function check_sum($val1, $val2) {return $val1 + $val2;}

    public function get_approver_manager()
    {  
        if($this->_approver_manager === null) $this->_approver_manager = new approver_manager($this->_value);
        return  $this->_approver_manager;
    }
    public function get_rule_manager()
    {
        if($this->_rule_manager === null) $this->_rule_manager = new approver_manager($this->_value);
        return  $this->_rule_manager;
    }
}
class rule_manager
{
    private $_value = null;
    function __construct($v_value = null)
    {
           $this->_value = $v_value;
    }
    public function check_rule()
    { 
         $this->_value + $this->check_rule2(); 
        return true;    
    }
    public function check_rule2(){ return Manager::get_instance()->check_sum();  }
}
class approver_manager
{
    private $_value = null;
    function __construct($v_value = null)
    {
           $this->_value = $v_value;
    }
    public function generate_approval(){ return 'xxxxxx'; }
}
$manager = new Manager($val);
$manger->get_rule_manager()->check_rule();
$manger->get_approver_manager()->generate_approval();
在规则管理器中,它具有来自规则管理器的函数调用
但我使用manager创建规则管理器,它返回到manager,似乎在浪费资源……

我只对顶级设计进行评论,因为您的代码非常糟糕

这完全取决于对象的用途。该示例不足以确定应用程序的适当OO设计


如果您按照您的示例使用它,则不需要rule/approval manager,因为它们提供的功能可以集成到manager中。

假设它是php,但结构良好,总体而言,我认为它是OO。有些事情我不能说是坏的或错的,但我敢说是不好的或不必要的。我想有一些甚至不会像预期的那样起作用。就我个人而言,我没有时间检查所有的代码并解释所有的事情,我想我并不是唯一一个这样做的人。此外,我认为这不是合适的地方。所以最好将规则/批准经理分开?因为我想做一些像工厂设计和使用经理这样的东西,这取决于很多事情。如果您只想在代码中使用工厂设计,而没有真正的好处,这取决于您自己。在目前的状态下,没有任何好处。