OOP:将对象克隆为后代类



这是一个面向对象设计/代码问题。我将设法简化我的问题,以便澄清。我有一个PecCollection类,它表示一个Pec对象的集合(一个Pec是一个"收费",描述它是什么并不是很重要。你可以把它看作是一个人应该拥有的任何东西)。

每个Pec"属于";创建Person时,它有自己的PecCollection,其中列出了所有的PecCollection。PecCollection只是一个存储PecCollection数组的类。Pecs对象是根据数据库中的数据创建的。

人(0,1)——→PecCollection (1, n)——包含在压电陶瓷

现在,我可能(但也可能不)想要在每个Pec上创建一个控件列表,并存储关于每个Pec的这些控件的数据(例如,"一个小时的数量",hoursNb)。

我能做的就是添加一个" nhours "属性,并将控件给出的nbHours存储在该属性中。但是,我认为(也许我错了),这不是一个好方法:它将Pec类的职责(代表一个基本的Pec)更改为几个职责(代表一个基本的Pec AND和受控的Pec)。此外,并不是所有的Pec都将被控制。

我可以创建一个从Pec继承的ControledPec类,另外还有nbHours属性。这似乎是一个很好的解决方案。并且我可以将这些对象存储在每个Person的ControlledPecCollection中。

人(0,1)————比;PecCollection (1, n)——包含在——是一个——ControlledPec

但是,这就是我的问题。我如何创建(AND:这是一个好做法吗?)从Pec对象已经存在的受控pecs对象,而不必重新创建受控pecs,通过在数据库中搜索数据(如Pec) ?知道受控Pec将永远是已经存在的Pec的专门化吗?

I am in PHP.

提前谢谢你。

多亏了Felipe, Decorator似乎是一个很好的解决方案。

最新更新