zoukankan      html  css  js  c++  java
  • 设计模式(二)---策略模式

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

    /**
    * Created by wqc on 2017/10/3.
    * 算法抽象类(武器抽象类)
    */
    public interface WeaponBehavior {
    public void useWeapon();
    }

    /**
    * Created by wqc on 2017/10/3.
    * 具体算法策略:斧头(使用的武器)
    */
    public class AxeBehavior implements WeaponBehavior {

    @Override
    public void useWeapon() {
    System.out.println("use axe .........");
    }
    }

    /**
    * Created by wqc on 2017/10/3.
    * 具体算法策略:剑(使用的武器)
    */
    public class SwordBehavior implements WeaponBehavior {
    @Override
    public void useWeapon() {
    System.out.println("use sword............");
    }
    }

    /**
    * Created by wqc on 2017/10/3.
    * 使用算法策略的用户(这里指使用工具的人)抽象类
    */
    public abstract class Charactor {
    WeaponBehavior weapon;

    public void fight() {

    }

    public void setWeapon(WeaponBehavior w)
    {
    this.weapon = w;
    }

    }

    /**
    * Created by wqc on 2017/10/3.
    * 使用算法策略的用户(这里指使用工具的人)具体实现类
    *
    */
    public class King extends Charactor {
    public void fight() {
    System.out.println("King fight......");
    weapon.useWeapon();
    }
    }
    /**
    * Created by wqc on 2017/10/3.
    * 策略模式:定义了算法族,分别分装起来,让它们之间可以相互替换,此模式让算法的变化可以独立于使用算法的用户。
    */
    public class test {
    public static void main(String[] args) {
    Charactor king = new King();
    WeaponBehavior sw = new SwordBehavior();
    king.setWeapon(sw);
    king.fight();

    WeaponBehavior axe = new AxeBehavior();
    king.setWeapon(axe);
    king.fight();
    }
    }



  • 相关阅读:
    一个、说到所有的扩展指标
    时序图、流程图
    流程图总结
    UML活动图与流程图的区别
    类图与对象图
    app的描述-软件的描述
    UML的目标
    软件建模的用途
    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
    Serializable 和 Parcelable 区别
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/7814902.html
Copyright © 2011-2022 走看看