您的位置:首页 > 其它

[一]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();




}
}


策略模式:

  定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: