JAVA 策略模式的个人理解

策略模式的经典意义在于各个不同的实现,使用的是相同的接口。也就是网友所说的:策略算法相同的行为的不同实现。
下面举例子
比如要去书店买书,书店的会员分为高级会员、中级会员与初级会员。高级会员打8折、中级会员打9折、初级会员打95折。
再此例子上,我们发现。我们的共同特点都是买书,那我们就可以把买书的这个策略抽象出来,在Java中我们可以用接口来定义此特点
interface commonTedian
public double  buyBook(double  price); 

上面也 说到了、不同的人买书需要不用的价格,所以需要有不同的人的类的行为来实现此买书的动作。确切的来说 应该是买书的价格受到了会员机制的影响。


比如:高级会员实现买书接口,那在实现价格方面。也就是
class GaoJi  implements TeDian
override
double buBook(double price){
return price*0.8
}

/**每个会员实现此方法类似**/
大家想,实现了买书的接口、得到了买书的行为。那我们怎么样让客户端知道什么样的会员选择什么样的标准呢?
学过JAVA的人都知道context这个东西,上下文,他的作用就是承上启下的作用。相当于联系两个黑色盒子的中间的部分,他是他是透明的。
既然是做联系用的,那我们在这个class中需要做的就是聚合
class context 
TeDian td;
public context(TeDian td){   //此构造是获取客户端选择什么样的会员,为了承上,也就是为了输入
this.td = td;
}
public double quote(double price){  //此方法是做价格动作的引用,为了启下,也就是为了输出
this.td.buBook(price);
}

客户端
TeDian td = new GaoJi();//这个是客户的选择,这里面可以有多种实现。
context ctx = new context(td); //构造函数接收用户输入
double dd= ctx.quote(200);//根据不同的会员选择不同的价格

有些描述不是很准确,大家理解就好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值