"策略模式"-之Java,Android面试必问设计模式(7/9)
来源:互联网 发布:汽车pp2000软件下载 编辑:程序博客网 时间:2024/06/05 03:27
好了大家,下面我们接着介绍我们的面试必问设计模式类型中的第7种:策略模式.
策略模式
1.所谓策略,就是我给你看几个东西,我想做成的效果不同,你给我提供做法或方案(两者共通的),我就通过这个共通的方法解决我”各自的问题”.
2.比如我想加或者减由我决定
3.你只需负责提供给我获取其中的数字的”方法”即可
给已经继承了”实现-算法接口的-类”“的方法里-添加辅助方法(通过继承抽象辅助类),从而让方法(运算方法通过实现算法)和功能(分割通过继承)想结合,为了方便大家阅读,我拆分出来描述:
1.计算”接口”-有返回值的计算方法(传入”字符串-表达式”)
2.有一个抽象类,里面有”辅助”的方法,比如分割.
3.多个算法”类”继承辅助函数,实现接口(加减乘除)
用户调用哪个算法就建哪个算法类即可
代码
//计算接口interface Caclctor { int caculate(String exp);}//多个具体的算法类,有计算接口的方法,也有辅助的方法.//减class Mins extends CaclatorHelp implements Caclctor { @Override public int caculate(String exp) { //继承了辅助,用外面的辅助的方法,辅助类的方法是为了拆分并获取数字 int[] num = splitMeth(exp, "\\-"); return num[0] - num[1]; }}//加class Plus extends CaclatorHelp implements Caclctor { @Override public int caculate(String exp) { //继承了辅助,用外面的辅助的方法 int[] num = splitMeth(exp, "\\+"); return num[0] + num[1]; }}//抽象的辅助类,用于拆分,并获取字母.abstract class CaclatorHelp { public int[] splitMeth(String exp,String opt) { String[] num = exp.split(opt); int[] ints = new int[2]; ints[0] = Integer.parseInt(num[0]); ints[1] = Integer.parseInt(num[1]); return ints; }}public class StrategyTest { public static void main(String[] args) { System.out.println("--------------------加----------------------"); Caclctor mins = new Mins();//用户创建什么就用什么算法 int result_m = mins.caculate("8-1"); System.out.println(result_m); System.out.println("--------------------减----------------------");; Caclctor plus = new Plus(); int result_p = plus.caculate("7+8"); System.out.println(result_p); }}
输出结果:
--------------------减----------------------7--------------------加----------------------15
关键点总结
1.所谓策略,就是我给你看几个东西,我想做成的效果不同,你给我提供做法或方案(两者共通的),我就通过这个共通的方法解决我"各自的问题".2.比如我想加或者减由我决定3.你只需负责提供给我获取其中的数字的"方法"即可
0 0
- "策略模式"-之Java,Android面试必问设计模式(7/9)
- "享元模式"-之Java,Android面试必问设计模式(9/9)
- "工厂模式"-之Java,Android面试必问设计模式(1/9)
- "抽象工厂模式"-之Java,Android面试必问设计模式(2/9)
- "单例模式"-之Java,Android面试必问设计模式(3/9)
- "建造者模式"-之Java,Android面试必问设计模式(4/9)
- "适配器模式"-之Java,Android面试必问设计模式(5/9)
- "装饰模式"-之Java,Android面试必问设计模式(6/9)
- "观察者模式"-之Java,Android面试必问设计模式(8/9)
- JAVA 面试32问||设计模式||程序员面试之葵花宝典
- Java设计模式之策略设计模式
- Java设计模式之策略设计模式
- 设计模式【一】之策略模式for Java And Android
- Java设计模式之策略
- android设计模式之策略模式
- Android 设计模式之策略模式
- Android 设计模式之策略模式
- Android设计模式之策略模式
- 《剑指offer》:[56]五岔路口交通管理红绿灯设计
- SpriteKit给游戏弹跳角色添加一个高度标示器
- Log4j2架构及概念简介
- UNIX套接字编程
- Lua脚本中释放binary文件
- "策略模式"-之Java,Android面试必问设计模式(7/9)
- AFNetworking下载进度条显示
- Java编译原理(有感)
- cookie与session机制
- ios - cordova 简介
- 算法导论-第二章
- Android vold启下篇(NetlinkHandler)
- iOS保存图片视频到photoLibrary
- 选择排序