[一]Head First设计模式之【策略模式】(鸭子设计的优化历程)
2016-04-09 22:01
357 查看
publicabstractclassDuck{ FlyBehaviorflyBehavior; QuackBehaviorquackBehavior; publicDuck(){ } publicabstractvoiddisplay(); publicvoidperformFly(){ flyBehavior.fly(); } publicvoidperformQuack(){ quackBehavior.quack(); } publicvoidswim(){ System.out.println(“Allducksfloat,evendecoys!”); }
publicvoidsetFlyBehavior(FlyBehaviorfb){ flyBehavior=fb; } publicvoidsetQuackBehavior(QuackBehaviorqb){ quackBehavior=qb; }
}
publicinterfaceFlyBehavior{ publicvoidfly(); } publicclassFlyWithWingsimplementsFlyBehavior{ publicvoidfly(){ System.out.println(“I’mflying!!”); } } publicclassFlyNoWayimplementsFlyBehavior{ publicvoidfly(){ System.out.println(“Ican’tfly”); } }
publicclassFlyRocketPoweredimplementsFlyBehavior{ publicvoidfly(){ System.out.println(“I’mflyingwitharocket!”); } }
publicinterfaceQuackBehavior{
publicvoidquack();
}
publicclassQuackimplementsQuackBehavior{
publicvoidquack(){
System.out.println(“Quack”);} }
publicclassMuteQuackimplementsQuackBehavior{
publicvoidquack(){
System.out.println(“<<Silence>>”);} }
publicclassSqueakimplementsQuackBehavior{
publicvoidquack(){
System.out.println(“Squeak”);} }
publicclassModelDuckextendsDuck{
publicModelDuck(){
flyBehavior=newFlyNoWay();
quackBehavior=newQuack();
}
publicvoiddisplay(){
System.out.println(“I’mamodelduck”);} }
publicclassMiniDuckSimulator{
publicstaticvoidmain(String[]args){
Duckmallard=newMallardDuck();
mallard.performQuack();
mallard.performFly();
Duckmodel=newModelDuck();
model.performFly();
model.setFlyBehavior(newFlyRocketPowered());
model.performFly();
} }
策略模式:
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
相关文章推荐
- JavaBean和JavaBeans
- 周易六十四卦——观卦
- 记录一次Centos7下php无法连接redis
- C语言循环数组做FIFO队列--一些认识
- android多线程下载
- PHP入门学习笔记之—— PHP 运算符
- 来上海的这一年
- 第七课 可执行程序的装载(2)
- 20145326 《Java程序设计》第6周学习总结
- hdu1669+二分多重匹配+二分
- 第9课 函数重载分析(下)
- Linux学习三部曲(之三)
- 第四次作业
- Android利用Cookie实现码源登录效果二
- Liunx文本处理三剑客之awk
- leetcode---Valid Palindrome
- nginx源码包编译安装
- [Web API] Client 指定請求及回應格式(xml/json)
- 解决Ubuntu下chrome总是在Dock上留两个图标
- android 面试总结(2)