-
1本身对象持有其他对象,
-
2本身的行为,依赖于传入的对象
-
3做到根据传入的对象不同就执行不同的行为
-
优点:动态改变对象行为
-
缺点:容易产生很多行为策略对象
-
客户必须知道每个行为对象
public class Client {
public static void main(String[] args) {
Duck duck = new Duck();
GaGa gaGa = new GaGa();
GuGu guGu = new GuGu();
duck.setVoice(gaGa);
duck.speak();
duck.setVoice(guGu);
duck.speak();
}
}
/行为接口/
interface Voice {
void voice();
}
/gaga的叫/
class GaGa implements Voice {
@Override
public void voice() {
System.out.println(“嘎嘎的叫”);
}
}
class GuGu implements Voice {
@Override
public void voice() {
System.out.println(“咕咕的叫”);
}
}
class Duck {
Voice voice;
public void setVoice(Voice voice) {
this.voice = voice;
}
public void speak() {
// 执行自身有的对象的方法;
voice.voice();
}