从中可以提炼出
一个软件是实体
是否月租,是否免费,是否到期,是否新订我设计为值对象,比如月租型可以设计为只有两个实例 一个是月租,一个不是月租,其它的以此类推
对于那些逻辑判断,我先设计个抽象规格,然后把那些规则判断定位其子类,每个子类中都有subscribe方法,参数是订购服务的实例,其中执行订购服务类中对应于相应规格的订购方法
接下去是设计订购服务中先定义一个 总的订购方法,例如
public boolean subscribe(Software asoftware)
{
for(循环那些已经定义了的规格实例)
{
if(符合此规格)
{
spec.subscribe(this);//this是订购服务类的实例,spec是相应规格
的实例
}
}
}
接着定义其它符合各种规格的订购方法