博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java与设计模式学习随笔:策略模式

Posted on 2010-11-24 11:37  Jonathan Deng  阅读(259)  评论(0)    收藏  举报

  策略模式和装饰模式的根本区别可以用一个形象的比喻来说明:

    策略模式--外表没有变,但心(本质)变了;

    装饰模式--外表变了,但心(本质)没有变。

  使用策略模式可以动态地让一个对象在许多行为中选择一种行为,以下列举一个简单的策略模式例子:

  

//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();
}
}