linkin大话设计模式--策略模式
linkin大话设计模式--策略模式
//显示客户端 根据不同的策略选择 会有不能的实现算法来处理逻辑
public class Strategy {
private DiscountStrategy strategy; public void setStrategy(DiscountStrategy strategy) {
this.strategy = strategy;
} public double getDiscountPrice(double price){
if(null == strategy){
strategy = new VipDiscount();
}
return this.strategy.getDiscount(price);
} public static void main(String[] args) {
//这里的策略就可以在客户端随意修改和增加
//这里的客户端代码和不同的策略类耦合,我们可以考虑使用配置文件在指定Strategy到底使用哪种策略实现类 这样子其实就是hibernate的dialect...
Strategy strategy = new Strategy();
System.out.println(strategy.getDiscountPrice(100));
strategy.setStrategy(new OldDiscount());
System.out.println(strategy.getDiscountPrice(100));
strategy.setStrategy(new NewDiscount());
System.out.println(strategy.getDiscountPrice(100));
} } //算法的接口
interface DiscountStrategy{
public double getDiscount(double price);
} //下面几个是算法接口的实现 要是增加一个算法就增加一个实现就好 还是比较方便的
class VipDiscount implements DiscountStrategy{ @Override
public double getDiscount(double price) {
System.out.println("VIP折扣...");
return price*0.5;
} } class OldDiscount implements DiscountStrategy{ @Override
public double getDiscount(double price) {
System.out.println("老顾客折扣...");
return price*0.7;
} } class NewDiscount implements DiscountStrategy{ @Override
public double getDiscount(double price) {
System.out.println("新顾客折扣...");
return price*0.9;
} }
linkin大话设计模式--策略模式的更多相关文章
- linkin大话设计模式--常用模式总结
linkin大话设计模式--常用模式总结 一,常用设计模式定义 Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter( ...
- linkin大话设计模式--建造模式
linkin大话设计模式--建造模式 建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 建造模式的结构: 抽象建造者 ...
- linkin大话设计模式--模板方法模式
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...
- linkin大话设计模式--桥接模式
linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...
- linkin大话设计模式--门面模式
linkin大话设计模式--门面模式 随着系统的不断改进和开发,他们会变得越来越复杂,系统会生成大量的类,这使得程序的流程更加难以理解.门面模式可以为这些类提供一个简易的接口,从而简化访问这些类的复杂 ...
- linkin大话设计模式--命令模式
linkin大话设计模式--命令模式 首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定. 也就是说,我们写 ...
- 大话设计模式--策略模式 strategy -- C++实现实例
1. 策略模式: 它定义了算法家族, 分别封装起来,使他们之间可以相互替换,此模式让算法变化, 不会影响到使用算法的客户. 用相同的方法调用不同的算法,减少各种算法类与使用算法类之间的耦合. 实例中策 ...
- linkin大话设计模式--代理模式
代理模式是一种应用非常广泛的设计模式,当客户端代码需要调用某个对象的时候,客户端并不关心是否可以准确的得到这个对象,他只要一个能够提供该功能的对象而已,此时我们就可以返回该对象的代理.总而言之,客户端 ...
- linkin大话设计模式--单例模式
linkin大话设计模式 开文前先弱弱的问一句:什么是设计模式?我在研究java2ee的时候有研究过,在学js的时候也有看到.设计模式的概念最早源于建筑设计大师<建筑的永恒算法>一书,它表 ...
随机推荐
- Markdown 常用语法
1.标题 # 一级标题 ## 二级标题 ### 三级标题 2.字体 *斜体* **粗体** ~~删除线~~<u>下划线</u> 3.引用 > 引用文字 4.无序列表 - ...
- python3之正则表达式
1.正则表达式基础 正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不然str自带方法,但功能十分强大. 正则表达式的大致匹配流程:依次拿出表达式和文本中的字 ...
- hook 虚表
PVOID* GetVtpl(PVOID lpThis, int nIndex){ return *(PVOID**)lpThis + nIndex;} PVOID HookVtpl(PVOID* ...
- windows 驱动开发入门——驱动中的数据结构
最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...
- 6.while loop
while 循环 有时候我们不确定需要循环几次.就像一个司机不知道自己需要什么时候加油一样.程序可以这样写: while petrol_filling: increase price show ...
- C#操作MongoDB的简单实例
最近比较忙,很久没更新了(虽然没人看,也没人在乎,也要记得be yourself), 前面分享了一些mongodb的安装和简单的语法,今天模仿支付宝首页的模块移动功能,用mongo做一个简单的后台实例 ...
- 用Token令牌维护微服务之间的通信安全的实现
在微服务架构中,如果忽略服务的安全性,任由接口暴露在网络中,一旦遭受攻击后果是不可想象的. 保护微服务键安全的常见方案有:1.JWT令牌(token) 2.双向SSL 3.OAuth 2.0 等 本文 ...
- Uva 11300 Spreading the Wealth(递推,中位数)
Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...
- BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1469 Solved: 631[Submit][Status][Dis ...
- eclipse(Version: Mars.2 Release (4.5.2)) groovy plugin install process.
There are two way to install : First: 1.check your eclipse version:Help-->About Eclipse 2.open He ...