首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOD: order.fill(仓库)-或-warehouse.fill(订单)

OOD: order.fill(仓库)-或-warehouse.fill(订单)
EN

Stack Overflow用户
提问于 2011-10-21 15:54:28
回答 2查看 105关注 0票数 1

哪种形式是正确的面向对象设计?

“品味问题”是平庸的一条简单的出路。

关于这个问题有什么好的读物吗?

我想要一个确凿的证据。

编辑:,我知道哪个答案是正确的(眨眼!)我真正想看到的是支持前一个表单(order.fill(warehouse))的任何参数。

EN

回答 2

Stack Overflow用户

发布于 2011-10-21 20:21:18

没有确凿的证据,在某种程度上,这是一个品味问题。OO不是科学,而是艺术。它还取决于领域、总体软件结构等,因此您的小示例不能外推到任何OO问题。

然而,以下是我根据您的信息得出的结论:

仓库里有东西。他们不接订单。命令要求的东西。他们不知道这些东西来自哪个仓库(或仓库)。因此,两者之间的任何一个方向的依赖都是不正确的。

在现实世界和软件中,某种东西会在两者之间起中介作用。@themel在对你的问题的评论中也表示了同样的观点,尽管我更喜欢听起来少一些编程模式。也许是这样的:

代码语言:javascript
复制
ShippingPlan plan = shippingPlanner.fill(order).from(warehouses).ship();

然而,这是一个品味问题:)

票数 0
EN

Stack Overflow用户

发布于 2011-10-21 21:47:44

以最简单的形式,仓库是一个库存仓库。

但是,将仓库视为由存储空间、个人、船坞等组成的设施也是正确的。如果你假设仓库的视图是这样的话,那么可以说仓库(作为一种设施)可以负责填写订单,或者以扩展的形式支付:

仓库设施能够按照给定的规格(订单)装配货物。

以上是:warehouse.fill(order);表单的一个理由(如果不是证据)。请注意,此表格实质上等同于SingleShot和themel的建议。诀窍是合并shippingPlanner (订单执行权限)和仓库(库存存储空间)。简单地说,在我的示例中,仓库是一个order fulfillment authority和一个inventory storage space的组合,而在SingleShot中,这两个部分是分别呈现的。这意味着,如果这种合并是(或变得)不可接受的(例如,由于部件的复杂性),那么仓库可以分解成这两个子组件。

我无法找到将fill操作分配给order对象的理由。

你好?仓库?是的,请收下这份订单并填上。谢谢。-我能理解

嘿,秩序!仓库在那边。做好你的事,让自己充实起来。--对我来说毫无意义.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档