还是以经典的会员价格策略为依托场景;

一、首先加入maven依赖,此依赖用于扫描并获取特定含有特定注解的类

二、定义个一个自定义注解,用来定义并判断价格区间

三、写一个策略接口类,用于定义获取折后价格的抽象方法

四、写一个抽象类,用来实现策略接口中的方法,并且将公共的前置判断逻辑放在此抽象类中(此为模板设计模式),并定义好抽象方法calcPrice()让各自的策略类中去实现

五、各自的策略类:Ordinary(普通用户),Member(会员 6折),SuperMember(超级会员,4折),都需要继承公共的模板类AbstractPrice

六、写一个工厂类,所有的策略类将注入到这个类中

七、写一个上下文类,用于获取具体的策略类实例,并执行对应策略类实例的计算方法:

测试:

精妙绝伦的设计模式:策略模式+模板模式+工厂模式相关推荐

  1. 设计模式(1)--简单工厂模式、策略模式

    设计模式(1)--简单工厂模式.策略模式 1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static ...

  2. 大话设计模式-策略模式与简单工厂模式

    来源:http://blog.csdn.net/wulingmin21/article/details/6712684 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策 ...

  3. 策略模式与简单工厂模式区别(转)

    最近一直在抽时间研究设计模式,之前对设计模式也有一定的了解,但是都没有平心静气的去研究过,只是了解了一些皮毛,最近打算再深入研究一下,重新打开了设计模式的数据,对之前的疑问一个个的刨根问底,今天看了简 ...

  4. 对设计模式的总结之工厂方法模式和抽象工厂模式

    前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓 ...

  5. 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂

    什么是抽象工厂模式 所谓抽象工厂模式,就是为创建一组相关或者是互相依赖的对象提供一个接口,而不需要指定它们的具体类的设计模式.抽象工厂模式适用于一个对象族有相同的约束的情况,用不抽象的语言解释就是国内 ...

  6. 设计模式之——简单(静态)工厂模式和抽象工厂模式

    文章目录 [关于设计模式] 设计模式的诞生 设计模式概念与解读 设计模式的原则 [关于工厂模式] 简单工厂(静态工厂)模式的概念 抽象工厂模式 工厂模式的使用时机和注意事项 给自己的思考 [关于设计模 ...

  7. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  8. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  9. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

  10. 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式

    设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...

最新文章

  1. Python命令行之旅:使用argparse实现git命令
  2. iOS项目开发过程中的目录结构(转)
  3. 【机器学习基础】深入讨论机器学习 8 大回归模型的基本原理以及差异!
  4. 经典C语言程序100例之四六
  5. ios学习--TableView详细解释
  6. 计算机科学基础知识(四): 动态库和位置无关代码
  7. 很全的sas基础知识
  8. 个人计算机的防毒软件无法防御,在win10系统中无法启动defender防御软件的解决方法...
  9. 机器为内容“体检”?AI算法这样解构内容创作理解
  10. latex生成的pdf论文在打印时页码混乱的解决方法
  11. 电脑chm文件打不开解决方法
  12. setUp和tearDown
  13. 宇视科技C-C++软件开发岗位校招面试过程
  14. Javascript:ES6-ES11(1)
  15. TPC/IP 协议头部说明
  16. 数据分析模型:OGSM模型
  17. 程序猿看了要xiao了
  18. Nhibernate心得
  19. 超级玛丽中那些不为人知的细节(上)惯性与冲刺
  20. spring boot报错:Parameter 4 of constructor in xx required a bean of type ‘xx‘ that could not be found.

热门文章

  1. (2022年)SpringBoot+Vue3前后端分离的在线报名系统
  2. android 渠道排名,10月安卓渠道数据分析:网游收入榜MMO占26%排名第1
  3. 《Python编程从入门到实践 第二版》第十八章练习
  4. windows下如何下载android源码
  5. 留良乡投资理财要合理配置资产
  6. 学习Spreadsheet常用属性
  7. 重量级ASP.NET资源
  8. 机械狗的机器学习入门(绪)——做一盘大菜。2019/3/31
  9. 我究竟适不适合做数据分析师?
  10. Ajax上传文件的cache、processdata、contentType属性以及FormData对象的总结