[极简理论] 策略模式 (Strategy Pattern)

if..else 的判断太麻烦,逻辑太烧脑怎么办,

策略一,策略二,策略三 排排坐

需要哪个就拿走,不谢


典型代表:

switch( strategy_key ):

     case "s1": 策略一;break;

    case "s2":策略二; break;

    case "s3":策略三; break;

    default: 没有你要找的策略;

}


变种一

let  strategys = { "s1": 策略一, "s2":策略二,"s3": 策略3}

function doStrategy(s_key){

       return strategys(s_key)

}

doStrategy ("s1")("hello world")


变种二

interface Strategys {

void strategysCanDo(param);

}

class 策略一 implements Strategys {

    void strategysCanDo(param){          System.out.println(param)    }

}

class 策略二 implements  Strategys {

    void strategysCanDo(param){          System.out.println("some prefix" + param)    }

}

class 策略三  implements   Strategys{

   void strategysCanDo(param){          System.out.println(param + "some suffix" )    } 

}

class CallStrategys{

  private  Strategys myStrategy;

  CallStrategys( Strategys  strategy){

       this. myStrategy =  strategy;

   }

  void call(msg){

   this. myStrategy. strategysCanDo (msg);

  }

}

void main(){

CallStrategys  cs = new  CallStrategys (new  策略二 ());

cs.call("this is my message);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。