十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家分享的是有关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中如何实现策略模式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!