CaveatEmptor网站拍卖许多商品,从电子设备到飞机票。拍卖的流程依照“英式拍卖”模型建立:用户可以在拍卖的商品上标出自己的价格,等到商品拍卖时间到期的时候,价高者得。
在任何商店,商品都可以按照类型分类,类似的商品都放在同一个架子上。明确的说,我们的拍卖目录需要一些具有层次关系的目录。那些购买者可以通过目录或者商品属性来浏览我们的拍卖目录。通过查询结果可以得到商品的列表,选择列表上的任意商品可以浏览商品的详细信息。
每一个拍卖都包含一系列的出价。其中的一个就是胜出者。用户的详细信息则包括姓名,登录,定制,email和出价信息。
在线拍卖的一个特色就是信任。拍卖者可以建立自己的名声,那些竞拍者可以为这些拍卖者作出自己的评价,而这些评价可以为其他竞拍者提供参考。
图3.2列出了领域模型的高层结构。让我们来简单的描述这个模型的特点。
每件商品只能被拍卖一次,所以我们为拍卖实体赋予唯一的标识,出价和拍卖实体关联。一个买家可以在拍卖的时候对其他用户做出评价,这就是评价和拍卖实体之间关联关系。用户的地址信息可以被单独抽象为一个类。在这里每一个用户可以拥有多个订单信息。订单策略被定义为一个抽象类的子类(允许扩展)。每一个拍卖实体至少属于一个Category。
一个Category可以嵌套在另外一个Category中,这可以被看成是一种递归关系。一个Category可以拥有多个孩子Category,但是只能用有一个父Category。
在领域模型中的实体应该封装必要的状态和行为。例如,用户实体应该定义名字和和地址,同时还要有计算运费的业务逻辑。每个领域模型的都是一个胖模型,通常具有复杂的关联、交互以及集成关系。
然而在本书中,我们不会过多的讲解关于领域模型的业务逻辑方面。当然我们也并不认为这些事情并不重要,相反,它们往往和持久化有着直接的关系。因此,我们会把精力集中在如何表达领域模型的状态上,我们不会过多的关心如何计算税费或者系统如何验证一个用户的账户。我们更多的关心用户和实体之间的关系以及它们如何被表示和持久化的。
我们已经有了领域模型,下一步就是在Java中实现它们。让我们来看看我们需要考虑的事情。

本文介绍了一个基于英式拍卖模型的在线拍卖系统设计,包括商品分类、用户评价等核心功能,并探讨了领域模型的设计原则。
52

被折叠的 条评论
为什么被折叠?



