策略模式
1. 策略模式,定义了算法族,分别封装起来,让它们之间可以互相转换,此模式让算放的变化独立于使用算法的客户。
2.================例子=========================================
public abstract class Duck {FlyBehavior flyBehavior;QuackBehavior quackBehavior;public Duck(){}public void performFly(){flyBehavior.fly();}public void performQuack(){quackBehavior.quack();}public void setFlyBehavior(FlyBehavior fb){flyBehavior = fb;}public void setQuackBehavior(QuackBehavior qb){quackBehavior = qb;}}public class MallardDuck extends Duck {public MallardDuck(){quackBehavior = new Quack();flyBehavior = new FlyWithWings();}}public interface FlyBehavior {public void fly();}public class FlyWithWings implements FlyBehavior {@Overridepublic void fly() {System.out.println("I am flying");}}public class FlyNoWay implements FlyBehavior {@Overridepublic void fly() {System.out.println("I can't flay");}}public interface QuackBehavior {public void quack();}public class Quack implements QuackBehavior {@Overridepublic void quack() {System.out.println("I am quack");}}public class MuteQuack implements QuackBehavior {@Overridepublic void quack() {System.out.println("I can't quack");}}public class MiniDuckSimulator { //测试public static void main(String[] args) {Duck model = new ModelDuck();model.performFly();model.setFlyBehavior(new FlyRocketPowered());model.performFly();}}
.以不同的格式输出同样数据的图形,比如曲线 或框图bar等。