我目前正在计划一个新系统的设计,我需要编写与后端API交互的代码。我正在考虑对象的组成和继承,并决定在我的情况下最正确的过程将是与继承的构图一起去,因为我的对象彼此具有“有”关系而不是“是”。使用Perl的OO设计模式
我现在发现虽然由于某些对象依赖于其他对象,因此可能存在“对象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
现在
:
$cat has a => $box that it belongs to
和
$cat has a => $organization that it belongs to ?
OR
$cat has a => $box that it belongs to WHICH has a => $organization that it belongs to
这里正确的设计决定是什么?有没有其他方面我不考虑哪一个可能使一个选项比另一个更可行?
我将在此系统中使用Perl Catalyst
和Moose
实施MVC
设计模式。
谢谢大家的贡献。
嗨有。首先谢谢你的回复。你的说法是有道理的 - 这将使我能够在整个系统中保持一个整洁的设计模式。我只会设计对象来关心直接影响他们的东西,并丢弃它不需要的链条上的任何东西。如果我在这里有足够的街道信贷,我会给你一个投票。一旦我达到了15的信誉标记要求,我会回来投票:) – nmap911
@ nmap911 - 如果答案有帮助,你可以(也应该:)也标记为“接受”(checbox左边)。很高兴我能提供有用的反馈意见 – DVK
非常好,感谢您的支持。有标记 - 我现在也获得了街头的信誉,所以有了投票权 – nmap911