关于对聚合和组合的理解

今天看了看

深入PHP++面向对象、模式与实践_第三版

其中看到“聚合”跟“组合”的概念,对此理解也比较模糊
文中是这样说的:

关于对聚合和组合的理解_第1张图片
关于对聚合和组合的理解_第2张图片

理解上面文本中的话,我个人理解是成这样:

首先是聚合

    aggregation, new AggregationB());
        array_push($this->aggregation, new AggregationC());
    }

    public function addAggregation(AggregationInterface $aggregation)
    {
        array_push($this->aggregation, $aggregation);

        return $this;
    }

    public function getAggregationList()
    {
        return $this->aggregation;
    }
} 
    
    
    

类内聚了两个类:分别是agregationB, agregationC 分别都实现了AgregationInterface, 而且在实力AgregationA的时候构造时实例化B和C。

再次是组合:

A类

    compositionB = $compositionB;

        return $this;
    }

    public function getCompositionB()
    {
        return $this->compositionB;
    }

    public function setCompositionC(CompositionC $compositionC)
    {
        $this->compositionC = $compositionC;

        return $this;
    }

    public function getCompositionC()
    {
        return $this->compositionC;
    }
}

B类

    

C类

    

接口

    

在实例化CompositionA 的时候并不会直接实例化其他类,这里只是清楚限定了CompositionB类作为参数类型传入setCompotionB方法,这里理解的组合就是:有提供组合的方法提供外界指定的类进行自由组合,并且使用组合当中的方法。

以上仅是个人的理解,不知道这对类的关系有没有帮助,最近在学习设计模式,概念有点模糊,还请各路英雄指点。感谢

你可能感兴趣的:(php)