可选模型设计,请大牛们支招

目前正在做公司的一个数据分析产品
需求如下:
1、给供应商提供销售数据
2、可给供应商提供的可选字段为 价格,数量,批次,销往单位
3、部分供应商可能只提供数量字段,也可能提供价格,也可能需要提供批次
4、如何避免编码里面太多的IF-ELSE

5、业务功能选项:对某一供应商的某一商品可能 提供销售流水数据,可能提供同类商品的销售对比数据,可能提供当前库存数据等等业务,如果灵活来设计避免太多的IF-ELSE出现?

6、可选字段和可选功能可能会随业务需求增加或者减少,该怎么处理维护软件的稳定性啊

7、如果不同的可选项分别建类可能要建很多类,该如何设计呢?

Class DataModel{
long id;
String orgName;
float price;
String batcherNum;
String itemCount;
}

Class Display{
public show(DataModel data){
if(showPrice){
out.println(data.getPrice());
}else{
out.println("---");
}
if(showBatcherNum){
out.println(data.getBatcherNum());
}else{
out.println("---");
}
}

}
我如何避免这样写代码?
[该贴被qqggcc于2009-03-18 13:42修改过]
[该贴被admin于2009-03-18 14:22修改过]

画出状态图模型和活动图模型,对需求详细分析后,挖掘导致分支合并的原因,在实现时再以相关模式完成。

感谢bangq大师的回复,主要是经常遇到这样的需求,以前基本上是通过if-else来解决,但是每次写这些语句的时候总觉得很心痛,可是实在是想不到更好的解决问题的办法,这种东西有点类似权限控制的味道,可是又不完全是,真的很郁闷啊

[该贴被qqggcc于2009-03-18 18:43修改过]

再仔细一点
1、有一个产品类Product
2、有产品销售记录SalesRecord(依赖Product)n:1
3、销售记录显示策略类DisplayPloy(依赖Product)1:1
4、SalesRecord通过DisplayPloy来显示有关数据如是否显示价格,批号,销往区域,销往单位负责人等
基本上没什么操作类,只是控制显示问题

UML图画的比较少,请问BANQ大师 ,这种设计如何处理好显示的问题
[该贴被qqggcc于2009-03-18 22:03修改过]

那些空值是不是都不显示,或者显示成“---”这样的呢?这样只控制显示的话我觉得给目标对象各个实例变量都赋个初值就好了,拿beanutils copy的时候忽略来源对象的空值。
class Product{
String name="---";
String batcherNum="---";
}
忽略空值copy之后,剩下的自然就是"---"这些了。

关键问题还是在于我这个数据显示的控制到底在那个层次上啊,是在V层还是在C层?
如果数据显示的组合太多我们也没办法为所有的显示建立那么多的V层,如果在C层,那么显示控制这些我们也要在c把数据处理好,似乎总是在2者的嵌套之中,可见遇到实际的业务问题我们的设计模式有时候好像失效了,如果只是针对同构的东西似乎很好解决,特别是这个数据被阉割了的问题,更是难以处理