java中的向上转型有什么妙用?

假如你在一个物流运输公司,有个客户要求你为他运输一定数量的产品到某地,使用某种交通工具.

那我们假设你的管理程序中有Truck类,Train类,Plane类专门用来实现

使用不同交通工具的成本计算,都有方法cost(Double weight,Double space);

那么,问题出来了.客户对于运输器种类是可选择的,

你是不是要对每种运输器new个实例放到不同的service方法中为客户服务呢?

很明显这么做有很多代码重复,而且效率太低.

那么为什么不构造一个运输工具的父类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public  class  Conveyance
{
protected  weight;
protected  space;
public  abstract  Double cost(Double weight,Double space);
}
//然后子类Truck,Plane,Train分别实现cost方法再构造一个工厂类为客户制造子类实例
public  class  ConveyanceFactory
{
     public  static  Conveyance getConveyance(String which)
     {
       if (which.equils( "Truck" ))
       {
       return  new  Truck();
       }
       else  if (which.equils( "Train" ))
       {
       return  new  Train();
       }
       else  if (which.equils( "Plane" ))
       {
       return  new  Plane();
       }
       else
       { return  null ;}
    }
//服务程序的方法实现:
public  double  transportCost(String type,Double weight,Double space)
{
Conveyance c;
Double cost;
c = ConveyanceFactory.getConveyance( "type" );
cost = c.cost(weight,space);
return  cost;
}


看上面服务层的代码多简单‘,而且在MVC层次结构中方法和类的设计也和面向对象.

这就是上塑造型给我们带来的好处咯这回就方便了

,需要Truck的时候,客户只要告诉你他要用卡车运输运多少距离多远.

那业务员就在option按扭里面选择”卡车”在文本框里输入重量多少距离多远.

veiw层把数据传给controler处理成我们的服务程序需要的数据类型.

然后服务程序被controler调用,用transportCost方法计算出成本返回给veiw,显示给业务员,业务员就可以告诉客户需要支付多少钱啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值