2019独角兽企业重金招聘Python工程师标准>>>

链接地址:http://www.xx566.com/detail/120.html

上一篇:揭秘设计模式:策略模式(Strategy)的学习与理解,我们简单的对策略模式做了学习和了解,之后又趁热打铁的阅读了不同设计模式书籍中,对策略模式的讲解,本质上的内容大同小异,不过在阅读设计模式之禅中,关于策略模式的讲解有点意思,使用了JDK5中的enum类型,也列举了一个明确的例子,特别来记录消化一下。

继续上一篇的例子,我们需要实现对不同类型的游戏收取不同的手续费,我们先来看一下枚举类型的实现代码,简单的有些出乎意料,我们首先定义一个枚举类型, 里面包含一个计算手续费的抽象方法,接收交易金额为参数,然后,我们枚举不同的游戏类型,端游,页游,手游,并对抽象方法进行实现,并提供一个简单的 main方法进行测试,整体代码如下:

package javase.strategy;/*** 手续费计算* * @Package javase.strategy* @ClassName: HandFeeCaculator* @author Realfighter* @date 2014-8-8 下午04:08:52*/
public enum HandFeeCaculator {// 端游PC {public double count(double amount) {return amount * 5 / 100;}},// 页游PAGE {public double count(double amount) {return amount * 2 / 100;}},// 手游MOBILE {public double count(double amount) {return 0.0;}};/*** 手续费计算的抽象方法* * @Title: count* @author Realfighter* @date 2014-8-8 下午04:22:53* @param amount*            交易金额* @return double*/public abstract double count(double amount);//简单测试public static void main(String[] args) {// 交易金额double amount = 500.0;// 计算不同游戏类型的手续费System.out.println(HandFeeCaculator.PC.count(amount));System.out.println(HandFeeCaculator.PAGE.count(amount));System.out.println(HandFeeCaculator.MOBILE.count(amount));}}

代码很简单把,下面我们来简单的剖析一下:上面的例子中,也是对策略模式的应用,我们定义了一个抽象的count()方法,承担Strategy的角色, 之后在枚举的每个成员中,对这个抽象方法进行了实现,承担典型的ConcreteStrategy角色,而枚举类本身又承担了Context环境角色的作 用,我们通过选择不同的枚举成员就可以达到计算不同手续费的目的,挺有意思的,利用枚举实现了典型的策略模式,与之前枚举的单例实现一样(具体内容请点 击:三种方式实现类的Singleton(单例)),给人眼前一亮的感觉。

转载于:https://my.oschina.net/realfighter/blog/349758

揭秘设计模式:策略模式(Strategy)的枚举(Enum)实现相关推荐

  1. 设计模式-策略模式(Strategy)-Java

    设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...

  2. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  3. 设计模式--策略模式(strategy)

    1.策略模式(strategy ['strætədʒi]) 我的理解是:方案候选模式 (反正关键就是有很多的候选,哈哈) 看了很多例子,都是在说鸭子的,那个例子很好,在这里可以看 他们生产鸭子,我们就 ...

  4. 李建忠设计模式——策略模式Strategy

    目录 1.策略模式定义 1.动机 2.模式定义 3.结构 2.实现例子 1.问题描述 2.代码实现 3.要点总结 4.参考 1.策略模式定义 1.动机 软件构建过程中,某些对象使用的算法可能多种多样, ...

  5. 关于设计模式——策略模式-Strategy Pattern

    文章目录 1 策略模式 1.1 模拟鸭子 1.2 设计原则 1.3 整合行为 1.4 模拟鸭子代码的代码 1.5 动态设定行为 1.6 重新查看整体 1.7 继承和组合 1.8 总结 1.9 优劣期间 ...

  6. 设计模式-策略模式(Strategy Pattern)

    Define a family of algorithms,encapsulate each one,and make them interchangeable(定义一组算法,将每个算法都封装起来,并 ...

  7. 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?

    文章目录 案例:指挥官AI 策略模式 配合工厂模式 总结 完整代码与文档 案例:指挥官AI 案例可能不符合实际逻辑,仅用于表述设计模式的思想,勿介意 假设我们开发了一款类似全面战争的即时战略游戏,为了 ...

  8. 设计模式 - 策略模式Strategy

    策略模式(Strategy): 定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. 1 using System; 2 using System.Co ...

  9. 设计模式 – 策略模式(Strategy)

    2019独角兽企业重金招聘Python工程师标准>>> 实例:商店促销 (1)首先考虑用简单工厂模式进行设计 Ø  客户端代码Main.java package com.yilong ...

  10. 设计模式——策略模式( Strategy Pattern )

    写代码超过千行,自定义类10个以上,往往写着写着就觉的乱,最终决定抽空补习下设计模式方面的知识.本来AS3出了本关于设计模式的书的,国人也翻译了.我同事也早早买了一本,但前些天我借来看了几页,翻译的太 ...

最新文章

  1. c语言hailstone序列,第一章 c语言上机试卷.doc
  2. 记一次糟心的内网靶场实战
  3. express下使用ES6 - dtdxrk - 博客园
  4. python遍历文件_python3 遍历文件夹目录所有文件
  5. 做游戏,学编程(C语言) 3 利用函数对飞机游戏进行重构
  6. 炮姐ed计算机谱子,炮姐来了!《科学超电磁炮T》正式PV公开 1月开播_游侠网 Ali213.net...
  7. 如何用 Bash 创建一个二进制发布包
  8. 3dmax 模型到unity3d注意问题
  9. 从sql2016导出数据库到sql2014
  10. 【图像融合】可见光与红外图像融合方法和评价指标
  11. 多媒体的基础知识:感觉媒体、表现媒体、表示媒体、传输媒体、存储媒体
  12. 2021职业技能鉴定2021维修电工证(中级)考试题
  13. 非计算机专业的秋招之路
  14. 飞信WEB接口的一个返回网页C#处理源码
  15. 闹钟(Alarm Clock)
  16. 外卖点餐APP效果图
  17. vue实现跑马灯抽奖
  18. 嵌入式设备的switch 以及PHY 芯片调试和选型 (2)
  19. 归并排序详解(递归+非递归)
  20. mysql 查看slow query_MySQL慢查询日志(slow log)

热门文章

  1. python如何调用阿里云接口_阿里云 API调用实践(python语言)
  2. python面试文件操作_python基础-三分钟搞定面试官爱问的【文件操作】
  3. androidstudio自带git用法_Android Studio的git功能的使用介绍
  4. Spring MVC登录实例
  5. python3.7读取csv文件_Python3 读取csv文件
  6. JAVA标准包不存在_JAVA中引入自建包时提示包不存在
  7. checkout 撤销修改_撤销修改(第8篇)
  8. 20220219:力扣第72场双周赛题解
  9. java只有值传递_为什么说java中只有值传递
  10. vba判断是否为数字的方法小集