精妙绝伦的设计模式:策略模式+模板模式+工厂模式
还是以经典的会员价格策略为依托场景;
一、首先加入maven依赖,此依赖用于扫描并获取特定含有特定注解的类
二、定义个一个自定义注解,用来定义并判断价格区间
三、写一个策略接口类,用于定义获取折后价格的抽象方法
四、写一个抽象类,用来实现策略接口中的方法,并且将公共的前置判断逻辑放在此抽象类中(此为模板设计模式),并定义好抽象方法calcPrice()让各自的策略类中去实现
五、各自的策略类:Ordinary(普通用户),Member(会员 6折),SuperMember(超级会员,4折),都需要继承公共的模板类AbstractPrice
六、写一个工厂类,所有的策略类将注入到这个类中
七、写一个上下文类,用于获取具体的策略类实例,并执行对应策略类实例的计算方法:
测试:
精妙绝伦的设计模式:策略模式+模板模式+工厂模式相关推荐
- 设计模式(1)--简单工厂模式、策略模式
设计模式(1)--简单工厂模式.策略模式 1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static ...
- 大话设计模式-策略模式与简单工厂模式
来源:http://blog.csdn.net/wulingmin21/article/details/6712684 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策 ...
- 策略模式与简单工厂模式区别(转)
最近一直在抽时间研究设计模式,之前对设计模式也有一定的了解,但是都没有平心静气的去研究过,只是了解了一些皮毛,最近打算再深入研究一下,重新打开了设计模式的数据,对之前的疑问一个个的刨根问底,今天看了简 ...
- 对设计模式的总结之工厂方法模式和抽象工厂模式
前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓 ...
- 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂
什么是抽象工厂模式 所谓抽象工厂模式,就是为创建一组相关或者是互相依赖的对象提供一个接口,而不需要指定它们的具体类的设计模式.抽象工厂模式适用于一个对象族有相同的约束的情况,用不抽象的语言解释就是国内 ...
- 设计模式之——简单(静态)工厂模式和抽象工厂模式
文章目录 [关于设计模式] 设计模式的诞生 设计模式概念与解读 设计模式的原则 [关于工厂模式] 简单工厂(静态工厂)模式的概念 抽象工厂模式 工厂模式的使用时机和注意事项 给自己的思考 [关于设计模 ...
- java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...
23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...
- 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细
1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...
- Java设计模式(工厂模式>抽象工厂模式和原型模式)
Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...
最新文章
- Python命令行之旅:使用argparse实现git命令
- iOS项目开发过程中的目录结构(转)
- 【机器学习基础】深入讨论机器学习 8 大回归模型的基本原理以及差异!
- 经典C语言程序100例之四六
- ios学习--TableView详细解释
- 计算机科学基础知识(四): 动态库和位置无关代码
- 很全的sas基础知识
- 个人计算机的防毒软件无法防御,在win10系统中无法启动defender防御软件的解决方法...
- 机器为内容“体检”?AI算法这样解构内容创作理解
- latex生成的pdf论文在打印时页码混乱的解决方法
- 电脑chm文件打不开解决方法
- setUp和tearDown
- 宇视科技C-C++软件开发岗位校招面试过程
- Javascript:ES6-ES11(1)
- TPC/IP 协议头部说明
- 数据分析模型:OGSM模型
- 程序猿看了要xiao了
- Nhibernate心得
- 超级玛丽中那些不为人知的细节(上)惯性与冲刺
- spring boot报错:Parameter 4 of constructor in xx required a bean of type ‘xx‘ that could not be found.