《每天一点Java知识》设计模式——策略模式

策略模式的概念图

策略模式源来

在生活中,实现一个目标有多种方式方法,也就是有多种策略。可以用if-else来简单的判断,但是当条件变多,并且条件变复杂后,耦合会十分的高,逻辑混乱不够清晰。
所以就产生了策略模式。
首先有一个上下文类Context,这个类持有一个策略的类引用 Strategy,并且有一个set方法。

public Class Context{
  Strategy strategy;
  public void Context(Strategy strategy){
  this.strategy=strategy;
  }
  public void doSomething(){
    strategy.doSomething();  
  }
}

然后将Strategy当做接口类,声明必须要实现的方法doSomething(),实现它的多个策略子类。

public inteface Strategy{
  public void doSomething();
}
public Class OneStrategy implement Strategy{
  public void doSomething(){
     System.out.println("one");
  }
}
public Class TwoStrategy implement Strategy{
  public void doSomething(){
     System.out.println("two");
  }
}

最后使用策略OneStrategy来解决问题。

public void main(){
  Context context=new Context(new OneStrategy);
  context.doSomething();
}

若要是用策略TwoStrategy,将TwoStrategy 传递进Context中即可。

核心思路是,持有接口引用,使用实现接口的具体类来覆盖其方法,可扩展性和维护性极强。

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

推荐阅读更多精彩内容

  • 股票大作手回忆录里记录了利弗莫尔投资生涯中犯过的错误,小到损失本金,大到负债破产,真金白银换来的经验教训在今天依然...
    从小白到精通阅读 448评论 0 2
  • 慢慢挪开时光的轩窗 探头出去看看远方 原来 不知不觉间 已经悄悄越过了五月的颈部 即将迎来六月的眉稍 就在这五月末...
    一个叫李柯的女孩阅读 274评论 0 2
  • 今天收到一个种子花开的惊喜,那就是我找到了一个英语语境下生活的的学友,一起结对子学英语,事实上我是困难户,我的学友...
    寸心洁白阅读 226评论 0 2
  • 作为一名大四应届生,终于知道简历石沉大海是什么个体会。 看到了好几个“不匹配”反馈是这么写的: 建议参考STAR法...
    gyt95阅读 9,047评论 0 2
  • TO.柴姑 2016年又要到最后一个月了,年初的愿望还历历在目,新学期的誓言还写在本本上。这个学期就又要过去了。成...
    一块甜糕阅读 331评论 3 1