抽象--面向接口编程--一个简单的小设计
今天遇到个小问题,跟大家分享。
需求:
首先,有个价格列表,它表示某种产品单价多少。例如:英雄牌(brand)钢笔(product)100(price)元(priceunit)每支(per unit)
这样就有个了个列表,列出了各种产品,一支多少钱,什么牌子的。
现有菜刀,钢笔,打狗棒。
其次,有三种人。流氓,教师,乞丐。
public class Rascal
{
}
public class Teacher
{
}
public class Beggar
{
}
{
}
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的类型,到底是笔,打狗棒还是菜刀。所以这种级别的抽象只适合于业务对象针对少量的产品有价格变化,对于大多数产品,价格公式都是一样的。如果需要对每种产品根据逻辑来定价,那需要进一步抽象。下班回家,有空接着抽象啊
简单,希望有用,欢迎拍砖。
专注于企业级软件开发,做对
客户有用的软件。