• 设计模式(二)---策略模式


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

    /**
    * 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();
    }
    }



  • 相关阅读:
    centos 搭建 sftp 服务器
    apt-get 安装时,提示lock被占用
    Kafka
    设计模式-分类
    SparkSQL – 从0到1认识Catalyst
    Spark分布式计算引擎
    Spark存储管理
    Spart RDD
    硬件工程师的你也不想一辈子画图、调板子吧!!!
    如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/7814902.html
Copyright © 2020-2023  润新知