复合设计模式PHP示例

时间:2015-07-05 17:49:46

标签: php design-patterns

在客户端代码中,它最简单的应该是:

<input type="text" id="field1" value="<?php echo $viewallcompanies['tcname']?>" disabled/>

然而,我们正在尝试使用复合设计模式,很快就会变得非常重要。我一直在研究以下内容:

<?php
// Client code
 $int1 = new _Integer(2);
 $int2 = new _Integer(3);

 $operator = new Operator('+');

 $op1 = new Operands($int1);
 $op2 = new Operands($int2);

// $op1 + $operator + $op2 = Solution === 5

?>

我已经达到了一点,我需要一些动词和名词的帮助,而且还有这个伟大模式背后的逻辑 - 基于这个简单的等式。

提前致谢。

编辑:@PeeHaa。不可否认,它的定义不是很明确。好的,我正在尝试将复合模式应用于算术表达式:

((3 + 4-1)* 5 + 6 * -7)/ 2

<?php

// Use case: 2 + 3 = 5

// Component
interface Solution {
        function f();
}
// Composite
class Operands implements Solution {
        private $ints = [];
        function __construct(_Integer $_integer = null ){
                $this->_integer = $_integer; 
                array_push($this->ints, $this->_integer);
        }
        function f(){ /* Do nothing */ }

}
// Leaf
class _Integer implements Solution {
        private $_int;
        function __construct($_int){
                $this->_int = $_int;
        }
        function f(){ /* Do nothing */ }

        function getInt(){
                return $this->_int;
        }
}
// Leaf
class Operator implements Solution {
        private $operator;
        function __construct($operator){
            $valid = in_array($operator, ['+','-','/','*']);
            if($valid) $this->operator = $operator;
        }

        function f(){ /* Do nothing */ }
}

例如,在PHP中。我首先得到了这个想法: https://sourcemaking.com/files/v2/content/patterns/Composite_example1-2x.png

但我正在苦苦挣扎,正在寻找一些指导。

0 个答案:

没有答案