Angelo Lee's Blog
This is my kingdom .If i don't fight for it ,who will ?

一、需求调研及分析

对于电子商务销售的广义商品主要分为两种:1、无形商品和服务的电子商务;有形商品和服务的电子商务。

无形商品和服务一般包括:

1)在线订阅。分为免费订阅和收费订阅;

2)特殊信息收费方式。一般分为免费信息和特殊信息,使用下载方式提供;

3)在线服务。每月收取固定的费用,为消费者提供各种在线服务的方式,比如QQ会员,邮箱包月,杀毒包月等;

4)在线娱乐。包括网络游戏的按月、按时收费等。

有形商品和服务一般表现为网上销售。

 

二、产品抽象设计

产品目录及产品价格不在本文讨论范围内。

 

根据需求,具体到实际类型的各种“商品”有很多种类型,其属性差异很大,所以在设计上考虑到以后的扩展性,将商品设计成为继承的方式。

如上图所示。设计一个抽象类Product,放置商品的公共属性(部分),左边为有形商品,命名为
SalesProduct,有形商品包含高度、宽度、长度和重量等无形商品不具备的属性;右边为无形商品,包括在线订阅、在线服务,信息下载等。

所有关系都是泛化关系,一对一。

对于一般的网上商城的设计,只需设计SalesProduct即可,但对于电子商务产品而言,则需要考虑以后的

扩展性。

 

由于产品的抽象,所以在对产品的创建考虑使用工厂模式。

public class ProductFactory {

private static ProductFactory productFactory=null;

private ProductFactory(){}

public ProductFactory getInstance(){

if(productFactory==null){

productFactory =new ProductFactory();

}

return productFactory;

}

public Product makeProduct(Integer productType){

//根据产品类型返回相应的产品

return null;

}

}

 

OK。下一步让我们继续分析SalesProduct更加具体的内容。

 

三、产品详细设计

下图是www.joyo.com的影视产品详细页面,由于比较长,所以我只贴出第一页,详细可见下面链接:

http://www.joyo.com/detail/product.asp?uid=wusue1ibcs9ug7g9aaggssg57&pageletid=showTopRenqi&prodid=bkys613058&ref=CN_TS

 

图中用红色圈圈圈住的部分分别为产品标题、演员&导演、价格区、送货方式、用户评分(一种C2B方式)、促销推荐、描述(及其它属性)。

还有不在图中的信息有:内容介绍、购买此商品的顾客也购买了、查看此商品的顾客也查看了、产品参数、本片的主要演员的其它作品、常见问题、用户评论、您可以用以下几种方式找到此商品。

 

噢!内容太多了。怎么着手呢?

我们分析的思路应该考虑那些是产品本身的属性、那些是关系密切的外部实体,那些是关系较松散的外部实体。

 

经过分析的内容分类如下:

 

您也许会奇怪,我为什么始终都没有将价格放入到产品本身呢?因为就电子商务的销售而言,价格是变化很频繁、而且同一个商品会有多种价格(会员等级)、并和各种的促销形式、进货价格等挂钩。所以如果直接做为产品的自有属性将大大降低了灵活性,导致很多业务都无法实现(或者很困难)。

 

考虑到篇幅和重点。本文只讨论产品本身的属性设计。

对于一个商城而言,产品种类很多,各类产品的相关属性各种各样,如电影会涉及到演员&导演、一些特定的产品参数,如视频格式、音频格式等。

而有一些属性则是所有产品都共有的,比如产品标题、描述、内容介绍等。

所以在设计上需要考虑到这两类属性的区别。

 

我将之区分为公共属性和自定义属性。

公共属性将放入SalesProduct表,自定义属性则设计如下:

设计考虑,所有Attribute都必须有一个或者多个Options(否则状态为不可用),每个

Option都有类型、值、名称和是否缺省等属性。产品只会指向Option,关系是多对多。

 

这样,我们就可以增加演员Attribute

(演员在影视管理系统中是实体,在电子商务销售系统则只是一个值对象了)

在演员Attribute下增加梁朝伟、徐静蕾等演员(Option)。

然后将伤城这个产品和该Option进行关联。

产品参数等属性类似。

 

但是,我们也发现,对于自定义属性而言,有些属性是比较重要的,有些是不重要的。

比如演员,不单是放在标题下这个醒目的地方,而且还有业务挖掘——本片的主要演员的其它作品。

所以,需要对自定义属性进行进一步的配置。但是这就不属于自定义属性本身的范畴了。

我们将会另行设计一个实体来表达这种业务。

posted on 2009-03-25 20:04  Angelo Lee  阅读(222)  评论(0编辑  收藏  举报