我目前正计划设计一个新系统,我需要编写与后端API交互的代码.我正在考虑对象组合和继承,并决定在我的情况下最正确的程序是使用组合而不是继承,因为我的对象彼此之间具有"有"关系而不是"是".
我现在发现,虽然因为某些对象依赖于其他对象,所以可能存在"对象A"具有属性"对象B"和属性"对象C"的情况 - 然而"对象B"也具有属性"对象" C".
希望这个类比更有意义:
假设我有一家公司销售包含猫和放射性物质的盒子,这些盒子可能会或可能永远不会反应:
我把我的产品卖给了组织.用户通过指定他们所属的组织向我注册.组织可能有许多用户或没有用户.用户必须拥有其所属的组织.我跟踪我的产品(作为一个实体的盒子,作为一个实体的猫)以及它们属于哪个组织.我还跟踪猫和他们所在的箱子.一个组织可能有许多箱子,其中任何一个都有许多猫.盒子可能是空的.一些用户可以购买新的盒子,而其他用户只能看到它们.
身份验证和授权都由我与之交互的API管理.
对象关系:
$user has a => $organization that it belongs to
$user has a => $role that dictates what it may or may not do.
$box has a => $organization that it belongs to
Run Code Online (Sandbox Code Playgroud)
现在:
$cat has a => $box that it belongs to
Run Code Online (Sandbox Code Playgroud)
和
$cat has a => $organization that it belongs to ?
Run Code Online (Sandbox Code Playgroud)
要么
$cat has a => $box that it belongs to WHICH has a => $organization that it …Run Code Online (Sandbox Code Playgroud)