查看: 851|回复: 0

[Java项目交流] java设计模式之---Strategy(策略)

[复制链接]
  • TA的每日心情
    无聊
    2016-12-1 15:20
  • 签到天数: 668 天

    连续签到: 3 天

    [LV.9]以坛为家II

    发表于 2015-5-12 22:11:34 | 显示全部楼层 |阅读模式
    /*
    * 设计模式之Strategy(策略):  算法族模式,在我们的应用系统中对于
    * 同一个行为(算法)表现出不同的代表方式,让算法(行为)的改变独立于外部程序的调用,
    * 对于外部程序员而言,他不关心具体的行为,只关心达到什么样的行为效果。
    * 通过动态的确定调用行为。
    */

    比如捕鱼方法:  
    写一个接口类:Cookfish
    1. public interface Cookfish {
    2.      public void cookfish();
    3. }
    复制代码
    有三个具体的实现方法
    1. public class ChineseCookfish implements Cookfish{      
    2.         public void cookfish() {
    3.                 System.out.println("JapaneseCookfish");
    4.         }
    5. }
    6. public class AmericanCookfish implements Cookfish{
    7.       
    8.         public void cookfish() {
    9.                 System.out.println("AmericanCookfish");
    10.         }
    11. }
    12. public class JapaneseCookfish  implements Cookfish{
    13.         
    14.         public void cookfish() {
    15.                 System.out.println("JapaneseCookfish");
    16.         }
    17. }

    复制代码
    写策略Strategy

    1. public class Strategy {
    2.         private Cookfish cookfish;
    3.         public Strategy(Cookfish cookfish){
    4.                 this.cookfish = cookfish;
    5.         }
    6.         
    7.         public void cookAction(){
    8.                 this.cookfish.cookfish();
    9.         }
    10. }
    复制代码
    测试类:

    1. public class Demo {
    2.         public static void main(String[] args) {
    3.                 Cookfish cookfish = new ChineseCookfish();
    4.                 Strategy strategy = new Strategy(cookfish);
    5.                 strategy.cookAction();//  使用strategy来调用此时的Cookfish行为。
    6.         }
    7. }

    复制代码
    输出结果:ChineseCookfish  

    如果将  ChineseCookfish变成  AmericanCookfish,  则输出结果为 AmericanCookfish。  


    参考:  守望者  设计模式入门

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    站长推荐上一条 /1 下一条