java设计模式——策略模式

策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。

 上图是百度百科对策略模式的图解,可以理解为一个Context为策略的外部封装类,或者说是策略的容器类,Strategy则是策略,其下的三个类则为三种分配策略,接下来用具体代码讲解:

代码结构

首先Duck属于上图中的Context,而FlyBehavior和QuackBehavior两个接口则为两种策略模式, 其下的类则为具体的实现类。在主函数中通过实例Context(即Duck),运用不同的策略实现

 这里着重介绍一下duck作为一个抽象类区别于接口是由于在抽象类中可以有方法实现,接口不能存在方法的实现,通过在MallardDuck中继承Duck类并实例化策略类。关于抽象类和接口的具体区别可查看https://segmentfault.com/a/1190000016415014

 

具体实现:https://github.com/Nnnnnnnnnical/headFirstDesign 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值