抽象--面向接口编程--一个简单的小设计
2009-07-08 06:05
246 查看
今天遇到个小问题,跟大家分享。
需求:
首先,有个价格列表,它表示某种产品单价多少。例如:英雄牌(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);
}
为每个需要购买商品的业务对象实现这个接口。比如教师类如下:
public class Teacher: ICharge
{
public decimal CalculateCharge(int qty, PriceItem pi)
{
if(pi.type=='pen')
{
return qty*pi.Price*0.6;
}
return qty*pi.Price;
}
}
相信大家已经发现了吧,这样需要判断一个Item的类型,到底是笔,打狗棒还是菜刀。所以这种级别的抽象只适合于业务对象针对少量的产品有价格变化,对于大多数产品,价格公式都是一样的。如果需要对每种产品根据逻辑来定价,那需要进一步抽象。下班回家,有空接着抽象啊
简单,希望有用,欢迎拍砖。
需求:
首先,有个价格列表,它表示某种产品单价多少。例如:英雄牌(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);
}
为每个需要购买商品的业务对象实现这个接口。比如教师类如下:
public class Teacher: ICharge
{
public decimal CalculateCharge(int qty, PriceItem pi)
{
if(pi.type=='pen')
{
return qty*pi.Price*0.6;
}
return qty*pi.Price;
}
}
相信大家已经发现了吧,这样需要判断一个Item的类型,到底是笔,打狗棒还是菜刀。所以这种级别的抽象只适合于业务对象针对少量的产品有价格变化,对于大多数产品,价格公式都是一样的。如果需要对每种产品根据逻辑来定价,那需要进一步抽象。下班回家,有空接着抽象啊
简单,希望有用,欢迎拍砖。
相关文章推荐
- 如何做一个简单的开放接口(1)-功能设计
- 简单的工厂模式+一个抽象接口
- 简单理解遵循接口隔离原则的Java设计模式编程
- 设计思想之二面向接口编程
- 设计思想之二面向接口编程
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- Spring AOP面向切面编程一个简单例子和在配置过程中出现错误
- [Java] Spring3.0 面向抽象(接口)编程
- 编程作业160 页 第5题 使用(接口)设计一个动物声音"模拟器",希望模拟器可以模拟许多动物声音
- 设计一个接口Shape,包括2个抽象方法getPerimeter()和getArea()
- 从头认识设计模式-策略模式-05-引入设计原则:面向接口编程
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- [Java] Spring3.0 面向抽象(接口)编程
- (6)MyBatis小总结:一个简单的例子--接口编程改进
- Java设计第一原则:面向接口编程
- 面向抽象(接口)编程和面向具体(类)编程
- C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
- 设计原则:面向接口编程
- 【编程素质】设计模式-工厂模式:工厂方法、简单工厂、抽象工厂