订购软件的设计思路

08-06-24 r7raul
需求:ISV有一个软件,用户要订购此软件

if(软件是否是月租型)

{

直接开通 //是月租

}

else

{

if(是新订还是续订)

{//是新订

if(是否免费)

{ //免费

直接开通

}

else

{ //不是免费

执行新订流程

}

}

else

{

if(软件是否到期)

{ //到期

执行到期续订

}

else

{ //没到期

执行未到期续订

}

}

}

    

r7raul
2008-06-24 14:30
从中可以提炼出

一个软件是实体

是否月租,是否免费,是否到期,是否新订我设计为值对象,比如月租型可以设计为只有两个实例 一个是月租,一个不是月租,其它的以此类推

对于那些逻辑判断,我先设计个抽象规格,然后把那些规则判断定位其子类,每个子类中都有subscribe方法,参数是订购服务的实例,其中执行订购服务类中对应于相应规格的订购方法

接下去是设计订购服务中先定义一个 总的订购方法,例如

public boolean subscribe(Software asoftware)

{

for(循环那些已经定义了的规格实例)

{

if(符合此规格)

{

spec.subscribe(this);//this是订购服务类的实例,spec是相应规格

的实例

}

}

}

接着定义其它符合各种规格的订购方法

r7raul
2008-06-24 14:31
晕,括号没对齐。。。

banq
2008-06-25 16:28
>是否月租,是否免费,是否到期,是否新订

是状态,使用状态模式来解决,先画个状态图出来,是不是涉及不同部门权限操作等等。

r7raul
2008-06-25 17:45
论坛不能上传图片。。。。。用状态模式? 我要做的是一个SAAS平台,提供ISV软件的接入,那些ISV提供软件,我们要为用户提供订购功能,订购功能就根据软件的各种类型来处理。状态模式是 封装转换过程,也就是转换规则,但是此处软件订购以后状态并不改变。规约 OR 状态模式??

[该贴被admin于2008-06-25 19:38修改过]


猜你喜欢
3Go 1 2 3 下一页