首页 > 其他 > 详细

策略模式

时间:2016-08-19 12:54:51      阅读:254      评论:0      收藏:0      [点我收藏+]

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

 

多用组合,少用继承。

//将基础属性与动态属性分类开来

public abstract class Duck {

    private FlyInterface flyInterface;

    private BarkInterface barkInterface;

    

    public abstract void swim(); 

    

    public abstract void display();

    

    public void performFly() {

        flyInterface.fly();

    }

    

    public void performBark() {

        barkInterface.bark();

    }

    

    public FlyInterface getFlyInterface() {

        return flyInterface;

    }

    public void setFlyInterface(FlyInterface flyInterface) {

        this.flyInterface = flyInterface;

    }

    public BarkInterface getBarkInterface() {

        return barkInterface;

    }

    public void setBarkInterface(BarkInterface barkInterface) {

        this.barkInterface = barkInterface;

    }

}

//duck实现类

public class MyDuck extends Duck {

    public void swim() {

        System.out.println("i can swim.");

    }

    

    public void display() {

        System.out.println("i am red.");

    }

}

//鸭子叫接口

public interface BarkInterface {

    public void bark();

}

//鸭子飞接口

public interface FlyInterface {

    public void fly();

}

//鸭子飞实现类

public class FlyWithWings implements FlyInterface {

 

    @Override

    public void fly() {

        System.out.println("i fly with wings.");

    }

}

//测试类

public class Test {

    public static void main(String[] args) {

        Duck myDuck = new MyDuck();

        myDuck.setFlyInterface(new FlyWithWings());

        myDuck.performFly();

    }

}

//结果:

i fly with wings.

策略模式

原文:http://www.cnblogs.com/fanguangdexiaoyuer/p/5787080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!