关于网上商店的目录模式(请大家探讨)

blueocean

我观察了几个网上商城的设计,自己实在不知道该怎么处理了,请各位指教
先描述一下。
网上商城的产品分成很多类,比如说图书,电子产品,玩具,等,这是一级大类。还要接着分,拿电子产品来说,分成laptop , mp3, pc,camera几类,
customer来到网上如果他选择了laptop,就会用(memory , hdisk , screen size , )等几个选项可以指定来缩小范围,如果是mp3呢,又会有另外一堆的参数来选择,比如有内存,是闪存的还是硬盘的,等。
我们可以组织我们的domain model 呢?因为在实际的使用中,会有新的category 出现,比如有了mp3,接着mp4,mp5,各有不同的attribute要在页面上显示 ,供用户添入参数搜索在这个category中搜索符合的产品,总之新的category不断的出现,每一个category有新的attributes,这样就相当于有了新的domain model 加入了我们的系统,我们的系统如何随着新的category的加入而动态的扩展呢。

anonymous
2004-10-13 17:47

这问题太简单了。“分类”和“产品”是个composite模式,产品的属性做成无类型的动态属性(参考OSPropertySet),OK了。

blueocean
2004-10-14 09:42

谢谢指点,虽然还不太知道是个什么样子,但总有了个尝试的方向

blueocean
2004-10-14 17:06

看了一天才把JDBCProperties看懂,可是怎么用还真不清楚,文档太差了,比我写的还少。不过总体感觉它是针对这个比较特殊的情况(在关系数据库不是很爽的时候)将ldap的那些东东移植过来了,本来我就打算用ldap 来实现,这样比较好扩展。
这个properties的可扩展性怎么样呀,它的这个思路我也是这样想的,不过被吓隹了,因为我觉的好像没有办法应用索引了。请看:
class AAAA {
int AAAAa ;
String AAAAb;

}
class B{
float BBBBa;
String BBBBb;

}

通常我们做成两个表。
create table AAAA (int AAAAa , String AAAAb);
create talbe BBBB(float BBBBa, String BBBBb);
如果业务发展了,需要做出CCCC来,可是我们不可能去修改运行着的程序,所以这种动态的用这种方法就不成了。

按propertySet的办法:动态的生成 。
create table AAAA,BBBB,CCCC
生成的表是一个表,如下
className, attribute, int , float , String
AAAA AAAAa 999 null null
AAAA AAAAb null null AAAAb'value
BBBB BBBBa null 9.9 null
BBBB BBBBb null null BBBBb'value
那么在上种方案中我们可以在表上AAAA的任一个attribute上建立index,在下面的方案中如何建立索引呢,给个办法吧

blueocean
2004-10-14 17:16

明白了,索引还是可以建的,只不过是本来不同的属性的全部建在了一个索引上,有很多的冗余,可能是没有办法避免的了,不过比我原来想的好多了。至少可以。。。。。。。。
,Hi,还是不好,没有办法同时将一个class的两个attribute放到where语句里。不好