java设计模式之-策略模式
优、缺点
优点:
1、可以动态的改变对象的行为
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类
2、策略模式将造成产生很多策略类
将变化的东西定义成一个接口(针对接口编程),有多少中策略就有多少个实现类(这也是上面缺点2的原因),然后在需要用到该变化东西的类里面定义该成员变量即可引入(组合),自行使用相应的实现策略。
下面举例说明
每种动物都有不同的叫声,动物的叫声是变化的,所以可以使用策略模式
首先定义策略接口(BleatBehavior)
//叫声类
public interface BleatBehavior{
public void bleat();
}
狗叫和猫叫分别实现BleatBehavior
//狗叫类
public class BarkBehavior implements BleatBehavior{
public void bleat(){
System.out.println("汪汪");
}
}
//猫叫类
public class MiaowBehavior implements BleatBehavior{
public void bleat(){
System.out.println("喵喵");
}
}
//动物类
public class Animal {
public BleatBehavior bleatBehavior;
//动态设置动物怎么叫
public void setBleatBehavior(BleatBehavior bleatBehavior) {
this.bleatBehavior = bleatBehavior;
}
public void performBark() {
bleatBehavior.bleat();
}
}
//狗类
public class Dog extends Animal{
}
//测试类
public class Test {
public static void main(String[] args) {
Animal dog = new Dog();
dog.setBleatBehavior(new BarkBehavior());
dog.performBark();
}
}
java设计模式之-策略模式相关推荐
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
- Java设计模式之策略模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- Java设计模式之策略模式+工厂模式+模板模式
Java设计模式之策略模式+工厂模式+模板模式 1.策略模式+工厂模式+模板模式 个人的理解:实际开发工程中,一些业务很复杂的逻辑使用很多的 if 或者 if···else 语句,不利于维护和扩展,为 ...
- 【Java设计模式】策略模式
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识 策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法.比如每 ...
- Java 设计模式之策略模式
一.了解策略模式 1.1 什么是策略模式 策略模式 (Strategy Pattern) 是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换.此模式让算法的变化独立于使用算法的客 ...
- java解决策略膨胀_折腾Java设计模式之策略模式
简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式.简单理解就是一组算法,可以互换,再简单点策略就是封装算法. 意图 定义一 ...
- 【设计模式】java设计模式之 -- 策略模式
对于代码中总是会有需要变化的部分和需要固定不变的部分.对于需要变化的部分,一般可以采用继承的方式,让子类对父类的方法进行重写,以改变已有的行为:如果变化的部分并不是所有子类都必须要有的,那就可以采用接 ...
- Java设计模式之策略模式---写的比较有趣,推荐大家看看
原文:http://blog.csdn.net/jason0539/article/details/45007553 背景 在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据 ...
- 《Java设计模式之策略模式》
<二 >策略模式 相信很多人都玩过魔兽世界这款游戏,它里面的战士有三种姿态:防御.狂暴.战斗,那么在不同的场景下我们需要使用不通的姿态,比如当MT抗怪就需要使用防御姿态,战场需要使用战 ...
- Java设计模式之——策略模式
策略模式的简单介绍 在软件开发中常常遇到这样的情况:实现某一个功能可以有多种算法或者策略,我们根据事件情况选择不同的算法或者策略来完成该功能.例如,排序算法,可以使用插入排序.归并排序.冒泡排序等. ...
最新文章
- [译] 学习 JavaScript:9 个常见错误阻碍你进步
- gsea结果分析图怎么看_数据分析怎么做?看这篇就够了!
- python中奇数怎么表示_如何在python输出数据中的奇数
- SpringCloud微服务:阿里开源组件Nacos,服务和配置管理
- 云计算产业迎利好 未来五年信息化发展蓝图公布
- Java流程控制01 用户交互Scanner
- 邢台职业技术学院计算机专业分数线,邢台职业技术学院录取分数线2021是多少分(附历年录取分数线)...
- 站在“巨人”的肩膀上运维
- python安装过程的一些问题解决方案
- 并行算法第三讲:稠密矩阵乘法
- batch入门教程(4)
- 连接oracle数据库代码,oracle数据库的连接代码
- 前端综合学习笔记---异步、ES6/7、Module、Promise同步 vs 异步
- VirtualBox6.0安装及配置
- pymongo根据ObjectId 查找文档记录
- iTerm2安装Zmodem工具支持rz和sz命令
- 免费好用的DiffMerge工具大总结
- OpenJudge1661:Bomb Game(翻译 day 6)
- android 退出 动画效果,Activity进入和退出动画的实现
- python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported‘) ...