抽象--面向接口编程--一个简单的小设计

今天遇到个小问题,跟大家分享。

需求:

首先,有个价格列表,它表示某种产品单价多少。例如:英雄牌(brand)钢笔(product)100(price)元(priceunit)每支(per unit)

这样就有个了个列表,列出了各种产品,一支多少钱,什么牌子的。

现有菜刀,钢笔,打狗棒。

其次,有三种人。流氓,教师,乞丐。

public class Rascal
{
}

public class Teacher
{
}


public class Beggar
{

}

逻辑是这样的:

流氓买菜刀5折。

老师买钢笔6折。

乞丐买打狗棒1折。

分析:

1,价格列表是个字典表,用的时候就去查。

2,各种人是业务对象,每个业务对象有自己的逻辑,根据自己的某些属性(或者本身的类型)来决定买东西的折扣。每个东西对每个人有不同的计算方法,得出不同的实际销售价格。

 

我是这样做的:

1,定义一个接口,里面定义了一个计算价格的方法。qty是要买的数量,PriceItem是对应的字典表里的每条记录。

pulbic interface ICharge

{

    decimal  CalculateCharge(int qty, PriceItem pi);

}

 

为每个需要购买商品的业务对象实现这个接口。比如教师类如下:

Code

 

相信大家已经发现了吧,这样需要判断一个Item的类型,到底是笔,打狗棒还是菜刀。所以这种级别的抽象只适合于业务对象针对少量的产品有价格变化,对于大多数产品,价格公式都是一样的。如果需要对每种产品根据逻辑来定价,那需要进一步抽象。下班回家,有空接着抽象啊

简单,希望有用,欢迎拍砖。

 

 

 

posted @ 2009-07-08 06:05  GodSpeed  阅读(296)  评论(0编辑  收藏  举报