JAVA设计模式-策略模式[Strategy]
java设计模式:策略模式[Strategy]
策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。
何时使用策略模式:
如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态的让一个对象在许多行为中选择一种行为。
如果系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些算法类都是一个抽象算法类的子类。换言之,这些具体算法类均有统一的接口,由于多态性原则。客户端可以选择使用任何一个具体算法类,并只持有一个数据类型是抽象算法类的对象。
一个系统的算法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的复发的和只与算法有关的数据。
http://blog.csdn.net/surprisesdu/archive/2006/03/24/636951.aspx
对于策略模式我引用了上面的连接:(我只不过用了自己的代码来加深印象)
//Person.java 策略接口public interface Person {public void speakLanguage();}//Chinese.java策略接口的实现类public class Chinese implements Person {public void speakLanguage() { System.err.println("I speak Chinese!");}}//StrategyPerson.java 策略调用类public class StrategyPerson {private Person person;public StrategyPerson(Person person){ this.person = person;}public void speakLanguage(){ person.speakLanguage();}}//TestMain.java 测试类public class TestMain {public static void main(String[] args){ Person person = new Chinese(); StrategyPerson sp = new StrategyPerson(person); sp.speakLanguage();}}