如何对此进行分类

时间:2014-06-10 10:48:27

标签: design-patterns

哪种设计模式最适合以下内容:

Object包含子对象的集合,它们都实现与父对象相同的接口。父对象迭代所有子对象接口方法。

可能是以下任何一种:

  • 委托
  • 复合

代码示例:

   interface Vehicle {
        function canMove();
    }

    class TransportFleet implements Vehicle {

        private $vehicles;

        public function __construct(array $vehicles = array()) {
            $this->vehicles = $vehicles;
        }

        public function canMove() {
            foreach($this->vehicles as $vehicle) {
                if (! $vehicle->canMove() ) {
                    return true;
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

这是 Composite 设计模式。在UML类图中,它看起来如下(对应于您的描述):

abstract composite class diagram

更新1:

如果您查看两个类图,您会看到第二个图匹配第一个图的复合部分,这是复合设计模式的一般说明:

composite class diagram