Java设计模式(3) -- 策略

Strategy

 

英文简单描述

Intent
Define a family of algorithms, encapsulate each one, and make them interchangeable.
Strategy lets the algorithm change dynamically.


How to
Strategy
declares an interface common to all supported algorithms.
ConcreteStrategy
implements the algorithm using the Strategy interface.
Context
is configured with a ConcreteStrategy object.
maintains a reference to a Strategy object.
may define an interface that lets Strategy access its data.

Known cases
Linebreak
Encrypt Algorithm

UML

 

代码实现:


 

委托和继承:

策略是通过另一个层次结构IStrategy来实现不同算法的,Context将compute委托给策略类

也可以用另一种方法来实现Context的compute的多样化:即继承Context,对于不同的compute提供不同的子类

这就涉及到委托和继承的选择问题

委托比继承灵活,可以动态配置,不会造成子类级数增长,另外可以通过对象的合成来实现多种功能(Decorator)

继承则相对不灵活,一旦选择了子类后,不能动态配置

另外,委托是黑盒重用,继承是白盒重用,应该多使用委托少用继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值