Java中如何运用策略模式优化设计模式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2150个文字,预计阅读时间需要9分钟。
在一个银行系统中,若普通用户、中级会员、高级会员分别对应不同的优惠政策,常规编程需用一系列判断语句区分用户类型,从而应用相应的策略模式。
在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。
一、概念理解
策略模式的概念很好理解,它将对象和行为分开,将行为定义为 一个行为接口和具体行为的实现,每个if判断都可以理解为一个策略。
如果在收银系统中使用策略模式,要将普通、中级、高级会员分别定义一个具体策略类,并实现各自的方法,定义一个环境类,持有策略类的引用,由引用调用相应的策略类方法,客户端传入相应的具体策略对象就会调用各自的策略方法。
学过了状态模式,很多人也把状态模式和状态模式搞混,现在就可以考虑一下为什么不使用状态模式?
各个策略之间并不存在流转(比如:状态1234切换)关系,都是各自的算法实现各自的逻辑,客户端控制调用哪个策略,如果使用状态模式就变成了,先调用普通会员的策略,再调用中级会员的策略,再调用高级会员的策略,看到最后的优惠用户估计会乐疯吧!
和状态模式一样,策略模式也应包含三个角色:
抽象策略类:策略是一个接口,该接口定义若干个算法标识,即定义了若干个抽象方法
具体策略类:具体策略是实现策略接口的类
环境类 /上下文类:上下文提供一个方法,持有一个策略类的引用,最终给客户端调用。
相比于状态模式,策略模式各个角色的职责更简单,我们基于收银案例实现策略模式demo。
本文共计2150个文字,预计阅读时间需要9分钟。
在一个银行系统中,若普通用户、中级会员、高级会员分别对应不同的优惠政策,常规编程需用一系列判断语句区分用户类型,从而应用相应的策略模式。
在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。
一、概念理解
策略模式的概念很好理解,它将对象和行为分开,将行为定义为 一个行为接口和具体行为的实现,每个if判断都可以理解为一个策略。
如果在收银系统中使用策略模式,要将普通、中级、高级会员分别定义一个具体策略类,并实现各自的方法,定义一个环境类,持有策略类的引用,由引用调用相应的策略类方法,客户端传入相应的具体策略对象就会调用各自的策略方法。
学过了状态模式,很多人也把状态模式和状态模式搞混,现在就可以考虑一下为什么不使用状态模式?
各个策略之间并不存在流转(比如:状态1234切换)关系,都是各自的算法实现各自的逻辑,客户端控制调用哪个策略,如果使用状态模式就变成了,先调用普通会员的策略,再调用中级会员的策略,再调用高级会员的策略,看到最后的优惠用户估计会乐疯吧!
和状态模式一样,策略模式也应包含三个角色:
抽象策略类:策略是一个接口,该接口定义若干个算法标识,即定义了若干个抽象方法
具体策略类:具体策略是实现策略接口的类
环境类 /上下文类:上下文提供一个方法,持有一个策略类的引用,最终给客户端调用。
相比于状态模式,策略模式各个角色的职责更简单,我们基于收银案例实现策略模式demo。

