码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2016-08-19 12:55:43      阅读:121      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!