zoukankan      html  css  js  c++  java
  • [一]Head First设计模式之【策略模式】(鸭子设计的优化历程)

    public abstract class Duck {
    FlyBehavior flyBehavior;
    QuackBehavior quackBehavior;
    public Duck() {
    }
    public abstract void display();
    public void performFly() {
    flyBehavior.fly();
    }
    public void performQuack() {
    quackBehavior.quack();
    }
    public void swim() {
    System.out.println(“All ducks float, even decoys!”);
    }
    public void setFlyBehavior(FlyBehavior fb) {
    flyBehavior = fb;
    }
    public void setQuackBehavior(QuackBehavior qb) {
    quackBehavior = qb;
    }
    
    
    }
    public interface FlyBehavior {
    public void fly();
    }
    public class FlyWithWings implements FlyBehavior {
    public void fly() {
    System.out.println(“I’m flying!!”);
    }
    }
    public class FlyNoWay implements FlyBehavior {
    public void fly() {
    System.out.println(“I can’t fly”);
    }
    }
    public class FlyRocketPowered implements FlyBehavior {
    public void fly() {
    System.out.println(“I’m flying with a rocket!”);
    }
    }
    
    
    
     
    public interface QuackBehavior {
    public void quack();
    }
    public class Quack implements QuackBehavior {
    public void quack() {
    System.out.println(“Quack”);
    }
    }
    public class MuteQuack implements QuackBehavior {
    public void quack() {
    System.out.println(“<< Silence >>”);
    }
    }
    public class Squeak implements QuackBehavior {
    public void quack() {
    System.out.println(“Squeak”);
    }
    }


    public class ModelDuck extends Duck {
    public ModelDuck() {
    flyBehavior = new FlyNoWay();
    quackBehavior = new Quack();
    }
    public void display() {
    System.out.println(“I’m a model duck”);
    }
    }
    
    
    
     
    public class MiniDuckSimulator {
    public static void main(String[] args) {
    Duck mallard = new MallardDuck();
    mallard.performQuack();
    mallard.performFly();
    Duck model = new ModelDuck();
    model.performFly();
    model.setFlyBehavior(new FlyRocketPowered());
    model.performFly();
    
    
    
    
    }
    }

     策略模式:

      定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

  • 相关阅读:
    20151216JqueryUI---dialog代码备份
    20151215jqueryUI--dialog代码备份
    20151215jquery学习笔记--jqueryUI --dialog(对话框)
    20151214 jquery插件代码备份
    20151213Jquery学习笔记--插件
    javaweb常用工具类及配置文件备份
    Javaweb常用工具类及配置文件备份
    20151212Jquery 工具函数代码备份
    20151212jquery学习笔记--工具函数
    CF976E Well played!
  • 原文地址:https://www.cnblogs.com/luoxiaolei/p/5372795.html
Copyright © 2011-2022 走看看