哪种形式是正确的面向对象设计?
“品味问题”是平庸的一条简单的出路。
关于这个问题有什么好的读物吗?
我想要一个确凿的证据。
编辑:,我知道哪个答案是正确的(眨眼!)我真正想看到的是支持前一个表单(order.fill(warehouse))的任何参数。
发布于 2011-10-21 20:21:18
没有确凿的证据,在某种程度上,这是一个品味问题。OO不是科学,而是艺术。它还取决于领域、总体软件结构等,因此您的小示例不能外推到任何OO问题。
然而,以下是我根据您的信息得出的结论:
仓库里有东西。他们不接订单。命令要求的东西。他们不知道这些东西来自哪个仓库(或仓库)。因此,两者之间的任何一个方向的依赖都是不正确的。
在现实世界和软件中,某种东西会在两者之间起中介作用。@themel在对你的问题的评论中也表示了同样的观点,尽管我更喜欢听起来少一些编程模式。也许是这样的:
ShippingPlan plan = shippingPlanner.fill(order).from(warehouses).ship();然而,这是一个品味问题:)
发布于 2011-10-21 21:47:44
以最简单的形式,仓库是一个库存仓库。
但是,将仓库视为由存储空间、个人、船坞等组成的设施也是正确的。如果你假设仓库的视图是这样的话,那么可以说仓库(作为一种设施)可以负责填写订单,或者以扩展的形式支付:
仓库设施能够按照给定的规格(订单)装配货物。
以上是:warehouse.fill(order);表单的一个理由(如果不是证据)。请注意,此表格实质上等同于SingleShot和themel的建议。诀窍是合并shippingPlanner (订单执行权限)和仓库(库存存储空间)。简单地说,在我的示例中,仓库是一个order fulfillment authority和一个inventory storage space的组合,而在SingleShot中,这两个部分是分别呈现的。这意味着,如果这种合并是(或变得)不可接受的(例如,由于部件的复杂性),那么仓库可以分解成这两个子组件。
我无法找到将fill操作分配给order对象的理由。
你好?仓库?是的,请收下这份订单并填上。谢谢。-我能理解
嘿,秩序!仓库在那边。做好你的事,让自己充实起来。--对我来说毫无意义.
https://stackoverflow.com/questions/7852031
复制相似问题