一个与两个对象的相关信息


One vs Two Objects Of Related Information

当有两个相关的对象时,最好将它们作为一个对象还是两个单独的对象?

例如,如果您有一个艺术家对象和一个与单个艺术家相关的唱片集对象数组。

<?php 
// two separate objects?
$artist = $ArtistDataMapper->find(1);
$album = $AlbumDataMapper->allByArtist($artist->id);
// or one
$artist = $AristDataMapper->find(1);  //datamapper will also include query for albums

这取决于你的目的是什么。但是,如果您将其视为物理实体,则最终可能会想到对不同实体的"引用"。我的意思是,你可能有: * 艺术家对象(ID、姓名、出生日期等) * 专辑对象(id、艺术家 ID、姓名等)

最终,您可能希望在两者之间甚至拥有唱片对象。

无论如何,这取决于您和您的要求。

类和对象是抽象。在定义它们时,程序设计者尝试将代码的单独部分分离为在相应上下文中有意义的逻辑实体。做OOP(面向对象设计)时的关键概念是abstractionencapsulationinheritance,我建议你学习。其他要学习的附带主题是固体,干燥,亲吻,掌握原则。也许其中一些很复杂,但有些非常简单。例如,来自 SOLID 的 S 代表单一责任。这个原则表明,一个类应该只有一个用途,并且只定义一种类型的对象。在您的情况下,艺术家是与专辑不同的逻辑实体。艺术家制作专辑,这表示它们之间存在关系,但它们并不相同。艺术家除了专辑之外还可以做其他事情,比如音乐会或采访,专辑也可以由艺术家群体或其他实体制作,并且通常具有与艺术家不同的属性。