189 8069 5689

Java中如何实现策略模式

这篇文章给大家分享的是有关Java中如何实现策略模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联公司是一家专注于成都网站建设、成都做网站与策划设计,秀峰网站建设哪家好?成都创新互联公司做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:秀峰等地区。秀峰做网站价格咨询:028-86922220

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

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

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

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

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

package strategy;   /**   * @author edison   * @date 2009-9-24   */ public abstract class Attact {   Passable pass;   Shootable shoot;      public abstract void display();      public void ownPass(){    pass.action();   }   public void ownShoot(){    shoot.action();   }    public void setPass(Passable pass) {    this.pass = pass;   }    public void setShoot(Shootable shoot) {    this.shoot = shoot;   }     }

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

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

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

得到几个设计原则:

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

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

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

类图:

Java中如何实现策略模式

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

感谢各位的阅读!关于“Java中如何实现策略模式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网站名称:Java中如何实现策略模式
分享链接:http://cdxtjz.cn/article/pgheos.html

其他资讯