策略设计模式

来源:互联网 发布:java银行项目经验 编辑:程序博客网 时间:2024/06/07 12:12

策略模式属于对象的行为模式。
其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
策略模式的结构

  策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。

package 设计模式;//************************主测试类***********************public class StrategyTest {    public static void main(String[] args) {        Duck duck=new BlackDuck("小黑");        duck.setFly(new FlyImpl());        duck.fly();        Duck noduck=new ModekDuck("小白");        noduck.setFly(new NotFlyImpl());        noduck.fly();    }}//***********************interface Flyavle{    public void flay();}class FlyImpl implements Flyavle{    @Override    public void flay() {        // TODO Auto-generated method stub        System.out.println("我飞的老高了!");    }}class NotFlyImpl implements Flyavle{    @Override    public void flay() {        // TODO Auto-generated method stub        System.out.println("我不会飞!");    }}abstract class Duck{    public String name;    private Flyavle fly;    public void setFly(Flyavle fly) {        this.fly=fly;    }    public Duck(String name) {        this.name=name;    }    public void fly() {        System.out.println(name+":");        fly.flay();    }}//真黑鸭子class BlackDuck extends Duck{    public BlackDuck(String name) {        super(name);        // TODO Auto-generated constructor stub    }}//模型鸭子class ModekDuck extends Duck{    public ModekDuck(String name) {        super(name);        // TODO Auto-generated constructor stub    }}//***********************
原创粉丝点击