Java策略者模式
来源:互联网 发布:网络通信基础知识 编辑:程序博客网 时间:2024/05/22 17:09
package second;/* * 策略模式: * 1.定义: * 属于对象的行为模式。其意是针对一组算法,将每一个算法分装到有公共接口的独立类中,从而使他们可以互相替代。 * 策略算法可以不影响客户端的情况下发生变化 * 2.解决问题: * 让对象和算法分离,由用户决定使用那种类对象 * 3.组成: * 环境类:用提供的不同类来传入 并且使用同一方法调用特有类的方法 * 抽象策略类:传入对象的公共接口 让所有类继承这个接口 用接口类型传入不同对象 * 具体策略类:定义具体类并继承抽象策略类实现具体方法 * 4.适用情况: * 仅仅是类的行为有差别时 * 需要使用一个算法的不同变体 * 算法使用客户不应该知道的数据 * 一个类定义的多种行为类操作以switch case结构或者if else实现 * * * *///抽象策略类 地图查找接口interface Map{ public void getSP();}/*三个功能不同的类*///中国地图class ChinaMap implements Map{ public void getSP(){ System.out.println("ChinaMap"); }}//法国地图class FrenchMap implements Map{ public void getSP(){ System.out.println("FrenchMap"); }}//美国地图class AmericanMap implements Map{ public void getSP(){ System.out.println("AmericanMap"); }}//环境类class SreachMap{ //私有接口类型的变量 private Map map; //创建构造函数 传入用户创建的对象 public SreachMap(Map map){ this.map=map; } //外部接口 设置对象 public void setMap(Map map){ this.map = map; } //对象操作 用同一方法执行不同内容 public void getMap(){ this.map.getSP(); }}public class Strategy { public static void main(String args[]){ //搜索中国地图---在搜索地图类中用户创建 想要的 中国对象 SreachMap searchmap = new SreachMap(new ChinaMap() ); //输出中国特性 searchmap.getMap(); SreachMap searchmap1 = new SreachMap(new AmericanMap()); searchmap1.getMap(); searchmap1.setMap(new FrenchMap()); searchmap1.getMap(); //SreachMap s = null ; //s.setMap(new FrenchMap()); }}/* * 结果: * ChinaMap AmericanMap FrenchMap*/
阅读全文
0 0
- Java策略者模式
- java设计模式(5) - 策略者模式
- 浅谈java设计模式--策略者模式
- Java设计模式---策略者模式
- java策略模式
- java中的策略模式
- Java策略模式(Strategy)
- java笔记 策略模式
- java 策略模式
- java 策略模式
- Java策略模式笔记
- Java策略模式回顾
- 策略模式----Java
- 策略模式-java实现
- JAVA策略模式
- 策略模式--java
- java策略设计模式
- java策略模式
- HihoCoder 1224:Racing(树DFS & 贪心)
- 如何进行修改SQL表结构
- jieba 分词自定义词典问题
- 类文件结构之一:魔数、版本号和常量池
- Chris Richardson 微服务系列 第四篇 微服务中的服务发现
- Java策略者模式
- 步进控制系统
- Grafana + mysql数据源
- java中Integer运算保留2位小数
- myeclipse10在创建servlet包时,包名报错
- 1002. A+B for Polynomials (25)
- 习题1
- Matlab GUI,设置按钮的背景图片,美化按钮
- 清除浮动