策略模式范例:有关足球的场景

你了解策略模式么?如果你对足球很熟悉,那么看了下面的介绍后,你大概会同样熟悉策略模式了。

成都创新互联-专业网站定制、快速模板网站建设、高性价比昆都仑网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式昆都仑网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖昆都仑地区。费用合理售后完善,10余年实体公司更值得信赖。

这里设计了一个有关足球的场景,在进攻当中暂分为传球和射门两个动作。

最开始你可能会这样想,设计一个抽象类(Attact),传球和射门分别定义好,子类会有一些他们个性的东西。比如球员号码,教练名称等等。

后来你发现传球和射门可能会分好多种,传球可分为短传和长传,射门又分为巴蒂式射门和因扎吉式的抢点。这样就不能将他们都写在这个抽象类(Attact)中,比如有的队员就是一个工兵型的(像AC米兰的加图索)他不停的抢断传球,很少参与到射门当中来。这样再定义若干个子类来继承(Attact)就不能满足需求。

我们可以把诸如传球和射门等动作抽象出来。组合到该抽象类中,只需在其中调用具体的方法即可。

像这样来定义:(其中Passable和Shootable为行为接口)

 
 
 
 
  1. package strategy;
  2. /**
  3.  * @author edison
  4.  * @date 2009-9-24
  5.  */
  6. public abstract class Attact {
  7.  Passable pass;
  8.  Shootable shoot;
  9.  
  10.  public abstract void display();
  11.  
  12.  public void ownPass(){
  13.   pass.action();
  14.  }
  15.  public void ownShoot(){
  16.   shoot.action();
  17.  }
  18.  public void setPass(Passable pass) {
  19.   this.pass = pass;
  20.  }
  21.  public void setShoot(Shootable shoot) {
  22.   this.shoot = shoot;
  23.  }
  24.  
  25. }

这里我们采用了策略模式,将传球和射门这一类动作定义为标准,封装起来,让他们之间可以互相的组合和替换,这样有效的使具体操作和实现分离。

上面一段话也可以这样说:

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

得到几个设计原则:

1.找到应用中可能变化之处,把它们独立初以来,不要和那些不需要变化的代码混在一起。

2.针对接口编程,而不是针对实现编程。

3.多用组合,少用继承。

类图:

以上就是策略模式的一个简单案例。

当前名称:策略模式范例:有关足球的场景
本文来源:http://www.shufengxianlan.com/qtweb/news44/504594.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联