import java.util.HashMap;
import java.util.Map;public class Test1 {/*** 我在思考 为什么要用策略模式,只是对行为做一些封装,调用 还是需要根据条件来判断选择哪种行为,经过写一段代码后有了一点小小的心得* 优点:行为封装 模块化,支持开闭原则,调用很简洁* 缺点:需要写一大堆行为实现类,并自行选择那种实现类* 如果结合map或者枚举能实现很优雅的code* 下面有利用策略模式实现的3个小例子分享给大家* main 常用策略模式* main1 策略模式与map结合后的* main2 策略模式与枚举结合后的*/public static void main1(String[] args) {BookMark b1 = new BookMark(new MenberVVip());BookMark b2 = new BookMark(new MenberVip());BookMark b3 = new BookMark(new MenberNoVip());System.out.println("hello i want bug some book");System.out.println("hello i am vvip:"+b1.safe(100D,2));System.out.println("hello i am vip:"+b2.safe(100D,2));System.out.println("hello i am novip:"+b3.safe(100D,2));}public static void main2(String[] args) {BookMarkplus b = new BookMarkplus();System.out.println("hello i want bug some bookplus");System.out.println("hello i am vvip:"+b.safe("vvip",100D,2));System.out.println("hello i am vip:"+b.safe("vip",100D,2));System.out.println("hello i am novip:"+b.safe("novip",100D,2));}public static void main(String[] args) {System.out.println("hello i want bug some bookplus");System.out.println("hello i am vvip:"+SafeBookEnum.getEnumByType("vvip").safeBook.safe(100D,2));System.out.println("hello i am vip:"+SafeBookEnum.getEnumByType("vip").safeBook.safe(100D,2));System.out.println("hello i am novip:"+SafeBookEnum.getEnumByType("novip").safeBook.safe(100D,2));}
}class BookMark{SafeBook safeBook ;BookMark(){}BookMark(SafeBook safeBook){this.safeBook = safeBook ;}public Double safe(Double price, Integer count){return  this.safeBook.safe(price,count);}
}class BookMarkplus{public static Map<String,SafeBook> c = new HashMap<>();static {c.put("vvip",new MenberVVip());c.put("vip",new MenberVip());c.put("novip",new MenberNoVip());}public Double safe( String type, Double price, Integer count){return  c.get(type).safe(price,count) ;}
}class BookMarkplusplus{public static Map<String,SafeBook> c = new HashMap<>();static {c.put("vvip",new MenberVVip());c.put("vip",new MenberVip());c.put("novip",new MenberNoVip());}public Double safe( String type, Double price, Integer count){return  c.get(type).safe(price,count) ;}
}abstract  class SafeBook{abstract Double safe(Double price ,Integer count);
}class MenberVVip extends  SafeBook {@OverrideDouble safe(Double price, Integer count) {return price*count*0.8;}}class MenberVip extends  SafeBook {@OverrideDouble safe(Double price, Integer count) {return price*count*0.9;}}class MenberNoVip extends  SafeBook {@OverrideDouble safe(Double price, Integer count) {return price*count;}}//枚举类的处理enum SafeBookEnum{VVIP("vvip",new MenberVVip()),VIP("vip",new MenberVip()),NOVIP("novip",new MenberNoVip()) ;public String menberType ;public SafeBook  safeBook ;SafeBookEnum(String menberType ,SafeBook safeBook){this.menberType = menberType ;this.safeBook = safeBook ;}public String getMenberType() {return menberType;}public void setMenberType(String menberType) {this.menberType = menberType;}public SafeBook getSafeBook() {return safeBook;}public void setSafeBook(SafeBook safeBook) {this.safeBook = safeBook;}public static SafeBookEnum getEnumByType(String type){for(SafeBookEnum entity : SafeBookEnum.values()){if(type.equals(entity.getMenberType())){return entity;}}return null;}
}

浅写策略模式,及map、枚举结合小例子相关推荐

  1. [设计模式] ------ 策略模式实战:java中替代if-else的大段逻辑

    java中用策略模式替代if-else的大段逻辑 问题: java本来是一门以面向对象为主的语言,但很多人嘴上说着java面向对象,然后除了表映射实体之外,其他的还是面向过程的思路. 就比如今天要说的 ...

  2. 2.商场促销 - 策略模式 (大话设计模式Kotlin版)

    编程题:制作商场收银软件 利用编程做一个简易的商场收银系统,营业员根据客户购买的商品的单价与数量,向客户收费. 快速实现 马上想到的解决思路:无非是提供两个输入,分别对应商品单价与数量,然后通过计算得 ...

  3. 橘子学设计模式之策略模式

    策略模式 1.简介 俗话说:条条大路通罗马.在很多情况下,实现某个目标的途径不止一条,例如我们在外出 旅游时可以选择多种不同的出行方式,如骑自行车.坐汽车.坐火车或者坐飞机,可根据实 际情况(目的地. ...

  4. 别在再满屏的 if、else 了,试试策略模式,真香!!

    你还在写满屏的 if/ else/ switch 之类的判断逻辑吗? 栈长在开发人员的代码中看过太多这样的低级代码了,真的太 low,极不好维护,本文栈长就教你如何用策略模式干掉 if/ else/ ...

  5. 利用策略模式结合alibaba/alpha框架优化你的图片上传功能

    图片上传作为一个App经常用到的功能,项目中可以使用各种成熟的框架去完成,但往往实际的情况比想象的复杂.假设我们的上传功能需要满足下面的情况: 支持上传一张图 支持上传多张图 上传多张图时能获取到每张 ...

  6. Android使用的设计模式2——策略模式

    今天讲解一下策略模式,策略模式也是很常用的设计模式,对多种算法或者数据结构选择使用的情况下,经常会使用策略模式来管理这些算法.下面会简单讲解一下策略模式的概念和基本实现.然后结合Android里面的实 ...

  7. 从诸葛亮的三个锦囊妙计谈策略模式

    从诸葛亮的三个锦囊妙计谈策略模式 话说当年东吴孙权为刘备借走了荆州不还而耿耿于怀,却不料甘夫人去世,周郎顿时计上心来,让孙权将其妹嫁与刘备,骗刘备来东吴完婚.刘备又不是傻子,当然知道其中的猫腻,当即表 ...

  8. 利用策略模式与装饰模式扩展JavaScript表单验证功能

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/55097262 ...

  9. java模板/策略模式打怪兽

    目录 小故事: 一起打怪兽 模板&策略模式 常规方式 模板模式 策略模式 相似: 差异: 小故事: 一起打怪兽 有个记者去光之国采访一群奥特曼,他问迪迦奥特曼:"你每天都干什么?&q ...

最新文章

  1. 利用nginx搭建RTMP视频点播、直播、HLS服务器
  2. python 基础 -- python 模块
  3. Squeeze Net
  4. android编辑框最大字数,TextView 限制最大行数、最小行数、字数超过“...”表示...
  5. jsp 页面中文乱码解决(笔记)
  6. linux分割内容单引号,linux变量、cut_sort_wc_uniq_tee_tr_split 命令使用方法
  7. 算法总结之 打印二叉树的边界节点
  8. 多目标优化中常用的进化算法简介及原论文(最全概括)
  9. linux运行Windows模拟器,如何安装和使用Wine,以便在Linux上运行Windows应用程序?...
  10. 接口配置锦囊妙计之三----端口自协商
  11. wifi信号强度测试软件 mac,Wifi Signal Strength for Mac(无线WiFi信号强度统计软件)
  12. 深度学习论文: Compounding the Performance Improvements of Assembled Techniques in a CNN及其PyTorch实现
  13. OTA频发的“大数据杀熟”,想要治你不容易?
  14. UTONMOS数字藏品走红之后,为艺术打开了另一条路
  15. 心理实验应用计算机的优缺点,发展心理学研究方法发展的新趋势
  16. 微信退还钱什么时候到账?
  17. 【python】用tkinter做一个最近很火的强制表白神器
  18. 二分图的匹配——匈牙利算法
  19. MFC层次结构图Version 9.0
  20. 观《从你的全世界路过》

热门文章

  1. B站小甲鱼python学习笔记
  2. 盘点:中国历史上最杰出的“十位圣人”
  3. android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧
  4. 在线教育大数据营销平台实战(搭建篇)
  5. Django连接mysql数据库操作
  6. 一个电子邮件规则-拥有一个单独的收件箱和一个收件箱CC,以减轻电子邮件压力。 保证。
  7. Windows自带远程桌面和远程协助用法
  8. echarts lengend格式化和换行
  9. ios共享账号公众号_家人公众号和共享相册
  10. Java学习-Java语言基础