Strategy Pattern
2015-06-18 15:55:29 1 举报
策略模式
作者其他创作
大纲/内容
Quackable
quack()
RedheadDuck
display() //红头鸭
封装呱呱叫行为
Squeak
quack() //橡皮鸭吱吱叫
DecoyDuck
display()
客户
Duck
FlyBehavior flyBehaviorQuackBehavior quackBehavior
swim()display()performQuack()performFly()setFlyBehavior()setQuackBehavior()//鸭子的其他行为
display()fly()quack()
设计原则 针对接口编程,而不是正对实现编程。
封装飞行行为
QuackBehavior
设计原则 找出应用中可能需要变化之处,吧它们独立出来,不要和那些不需要变化的代码混在一起。
MallardDuck
display() //外观是绿头
swim()display()//鸭子其他方法...
Quack
quack() //实现鸭子呱呱叫
RubberDuck
display()quack()
quack() //覆盖,没有fly() //覆盖,没有display() //诱饵鸭
FlyWithWings
fly() //实现鸭子的飞行
Flyable
fly()
设计原则 多用组合,少用继承。
FlyNoWay
fly() //不会飞
display() //绿头鸭
参考:《Head First 设计模式》
display() //诱饵鸭
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
display() //外观是红头
FlyBehavior
quack() //覆盖成吱吱叫display() //外观是橡皮鸭
display() //橡皮鸭
MuteQuack
quack() //不会叫
1.继承 子类继承父类方法,行为不同必须覆写;维护时,直接子类修改
quack()swim()display()fly()//鸭子的其他方法...
收藏
0 条评论
下一页