[设计模式]策略模式

声明: 本文所有代码均来自慕课网
模式简述
分别封装行为接口,实现算法族,基类里面放行为对象接口,在子类中设定具体行为对象。原则是分离变化部分封装接口,基于接口编程。此模式让行为算法的变化独立于算法的使用者。

策略模式的实现步骤
1 分离变化得出策略接口Strategy
2 为Strategy提供实现类
3 使客户程序中有一个Strategy
4 在客户程序中正确组装实现类

代码讲解

/*
 * 超类,所有的鸭子都要继承此类
 * 抽象了鸭子的行为:显示和鸣叫
 */
public abstract class Duck {

    /*
     * 鸭子发出叫声
     * 通用行为,由超类实现
     */
    public void quack(){
        System.out.println("嘎嘎嘎");
    }

    /*
     * 显示鸭子的外观
     * 鸭子的外观各不相同,声明为abstract, 由子类实现
     */
    public abstract void display();


    private FlyingStragety flyingStragety;


    public void setFlyingStragety(FlyingStragety flyingStragety) {
        this.flyingStragety = flyingStragety;
    }

    public void fly(){
        flyingStragety.performFly();
    }
//抽象出的Stategy接口
public interface FlyingStragety {

    void performFly();
}
//Strategy的实现类(此为其中一种)
public class FlyNoWay implements FlyingStragety {

    public void performFly() {
        System.out.println("我不会飞行!");
    }

}
//(子类)在客户程序中正确组装实现类
public class RubberDuck extends Duck {

    public RubberDuck() {
        super();
        super.setFlyingStragety(new FlyNoWay());
    }

    @Override
    public void display() {
        System.out.println("我全身发黄,嘴巴很红");
    }


    public void quack(){
        System.out.println("嘎~嘎~嘎~");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值