策略模式

策略模式定义:分别封装行为接口,实现算法族,超累里面放接口对象,在子类中具体设定行为对象。原则就是:分离变化部分,封装接口,基于接口编程各种功能。此模式让行为算法的变化独立于算法的使用者。
下面使用一个例子来实现策略模式:
比如我们要描述一个鸭子类,鸭子的颜色有红色,白色,绿色,有的鸭子会飞,有的鸭子不会飞。
第一步抽象可变的部分为接口,代码:

颜色:

//颜色接口
public interface Color{
    public void showColor();
}

飞行:

public interface Fly{
    public void flyLevel();
}

颜色的接口族

public class Whiet implements Color{
    @Override
    public void showColor(){
        System.out.println("----白色的鸭子----");
    }
}
public class Red implements Color{
    @Override
    public void showColor(){
        System.out.println("---红色的鸭子----");
    }
}

飞行的接口族:

public class CanFly implements Fly{
    @Override
    public void flyLevel(){
        System.out.println("----飞行能力挺好-----");
    }
}
public class NoFly implements Fly{
    @Override
    public void flyLevel(){
        System.out.println("-------没有飞行能力-----");
    }
}

ok,现在加入我们要实现一个白色会飞的鸭子,只需要定义好一个白色会飞鸭子的模板即可:

“`
public abstract Duck{
public Color color;
public Fly fly;

public void color(){
    color.showColor();
    }
    public void fly(){
    fly.flyLevel();
 }
 //下面可以增加抽象方法

}
public class WhiteFlyDuck extends Duck{
public WhiteFlyDuck(){
color = new Whiet ();
fly = new CanFly ();
}
//下面实现抽象方法
}
这样的话可以不仅使用继承来减少重复代码,而且又可以使用接口族来组合出不同的抽象类.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值