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



  • 相关阅读:
    Apache POI使用详解
    util.Date与sql.Date转换
    【转】javascript中not defined、undefined、null以及NaN的区别
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    DC维护工具Repadmin
    Outlook 配置exchange 缓慢,无法通过
    Windows 服务器站点设置
    Exchange 挂载点权限问题
    Windwos 查看WWN Number
    Exchange 2016 多站点创建oab shadow 副本
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/7814902.html
Copyright © 2011-2022 走看看