刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序
怎么表现这个呢?我们先看类图:
 

三个妙计是同一类型的东东,那咱就写个接口:  Istrategy

package Strategy_pattern;

/**
* @author lhb
* @类名 Istrategy
* @描述 策略接口 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 
* @时间 2022/4/25 13:43
* @版本
**/
public interface Istrategy {
/**
* 每个策略执行一个方法
*/
public void operate();
}

妙计三

package Strategy_pattern;

/**
* @author lhb
* @类名 ThreeStrtegy
* @描述 孙夫人断后,挡住追兵
* @时间 2022/4/25 13:47
* @版本
**/
public class ThreeStrtegy implements Istrategy{
@Override
public void operate() {
System.out.println("孙夫人断后,挡住追兵");
}
}

妙计二

package Strategy_pattern;

/**
* @author lhb
* @类名 secondStrategy
* @描述 求吴国太开个绿灯
* @时间 2022/4/25 13:46
* @版本
**/
public class secondStrategy implements Istrategy{
@Override
public void operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}

妙计一

package Strategy_pattern;

/**
* @author lhb
* @类名 FristStrategy
* @描述 找乔国老帮忙,使孙权不能杀刘备
* @时间 2022/4/25 13:45
* @版本
**/
public class FristStrategy implements Istrategy{
@Override
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}

好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀:

package Strategy_pattern;
/**
* @author lhb
* @类名 Context
* @描述 计谋有了,那还要有锦囊
* @时间 2022/4/25 13:58
* @版本
**/
public class Context {
private Istrategy strategy; /**
* 构造函数,你要使用那个妙计
* @param strategy
*/
public Context(Istrategy strategy){
this.strategy = strategy;
}
/**
* 使用计谋了,看我出招了
*/ public void operator(){
this.strategy.operate();
}
}

然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老
爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:

package Strategy_pattern;

/**
* @author lhb
* @类名 ZhaoYunMain
* @描述 赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
* @时间 2022/4/25 14:10
* @版本
**/ public class ZhaoYunMain {
public static void main(String[] args) {
System.out.println("-----------刚刚到吴国的时候拆第一个-------------");
//才开执行
new Context(new FristStrategy()).operator(); System.out.println("-----------刘备乐不思蜀了,拆第二个了-------------");
new Context(new secondStrategy()).operator();
//孙权的小兵追了,咋办?拆第三个
System.out.println("-----------孙权的小兵追了,咋办?拆第三个 -------------");
new Context(new ThreeStrtegy()).operator(); System.out.println("-----------最后周瑜配了夫人又折兵!!! -------------");
}
}

策略模式的好处就是:体现了高内聚低耦合的特性呀,缺点嘛,每一种策略都需要封装成一个类,可能会存在较多的策略类。 这也不叫缺点吧.

应用场景:  游戏在不同的场景或者策略下释放不同的技能.

就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,
还有一个就是扩展性,也就是 OCP 原则,策略类可以继续增加下,这
个不多说了,自己领会吧。

最新文章

  1. 直接操作 SDL_Overlay YUV叠加上的像素
  2. Python之路 day3 全局变量、局部变量
  3. 使用powerdesigner创建数据库表
  4. maven 的一些基本操作
  5. mvn export runnable jar
  6. pat L2-006. 树的遍历
  7. Number()、parseInt()、parseFloat()的区别
  8. MQL语句大全
  9. 使用 FLASH DATABASE 恢复误删除的用户
  10. ContextLoaderListener加载过程
  11. 芝麻HTTP:Flask的安装
  12. SSM-MyBatis-17:Mybatis中一级缓存(主要是一级缓存存在性的证明,增删改对一级缓存会造成什么影响)
  13. Nginx+DNS负载均衡实现
  14. 图解HTTP第六章
  15. C++拷贝构造函数(深拷贝&浅拷贝)
  16. 前端MD5加密【单向加密】
  17. JSP报错Syntax error, insert ";" to complete Statement
  18. 16.1 用auth0服务 实现用登录和管理 使用auth版本的2个大坑。
  19. VC/VS2010中快捷键
  20. python3入门教程

热门文章

  1. Python中的逻辑表达式
  2. 使用http://start.spring.io/构建maven微服务项目的几个坑及eclipse构建spring boot微服务项目
  3. centos 7搭建svn+apache及权限控制
  4. easyexcel注解
  5. VS Code 调教日记(2022.6.26更新)
  6. JAVA中简单的for循环竟有这么多坑,你踩过吗
  7. vue Module parse failed: Unexpected token You may need an appropriate loader to handle this file type
  8. JavaWEB-03-JDBC
  9. @Async注解的坑,小心
  10. java.super详解