桥接模式处理下机计算金额问题

上次个人版的时候,上下机算钱部分用的是策略+职责链,(详情参见:http://blog.csdn.net/lhc1105/article/details/30713331)然后因为调用方法太多,又加了个外观,处理的有点儿复杂了,感觉模式用的有点儿生硬。

这次合作版,添加设计模式的时候就去掉了它,改用另一个设计模式处理这个过程了。

这次用的是桥接模式:

因为下机受到计算钱到两个参数的影响,一个是用户类型,一个是收费策略,所以就用桥接模式分开这两个变化,比起以前写N*M个 策略上机策略更易于扩展和应对变化,可以加上很多类型的用户,也可以写很多如何收费的方法,如果两个方向的子类都很多,那么产生的N*M中组合也会很大,和主要使用策略模式相比,这种结构感觉是一种动态生成策略,比提前写好所有的策略更灵活。

小结:设计模式感觉挺有意思的,在个人版的时候可以先生拉硬拽的加上,到了合作版的时候,可以对自己使用的模式进行再思考,从而进行一个优化。

桥接模式处理下机计算金额问题,布布扣,bubuko.com

时间: 2024-11-08 18:57:13

桥接模式处理下机计算金额问题的相关文章

VB.NET & 策略模式(下机用户类型选择)

上篇文章讲述了对于下机操作和基本数据设定的时间联系,今天主要就是应用"策略模式"来了解了解对于固定用户,以及临时用户之间的选择,看学习设计模式的时候自己对于策略模式的理解,我们可以把固定用户和临时用户封装起来,这样系统就可以按照用户的类型来进行选择了.当然前提首先要抽象一个类,来封装这两个用户类型. 看类图: 代码具体化: 首先看抽象类:BL_CashSuper,定义两种支持算法的公共接口 ''' <summary> ''' 抽象类,定义所有支持算法的公共接口 ''' &l

桥接模式(Bridge)

一.桥接模式介绍: 桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化.而不会直接影响到其他部分. 未使用桥接模式的抽象与实现结构图(如下): 如果要增加一个apple品牌的电脑,则需要在台式机下新增一个apple的台式机 在笔记本下新增一个apple笔记本,在pad下新增一个apple的pad.代码比较繁琐. 如果使用桥接模式(如下图),使抽象部分和抽象的派生(实现)部分分离出来,这样让它们各自的变化,这样每种实现就不会影响到其他实现.从而达到对应变化的目的 将电脑类型作为一个维度

设计模式(七)桥接模式

核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联. 桥接模式可以取代多层继承的方案.多层继承违背了单一职责原则,复用性较差,类的个数也非常多.桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本. 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则. 如上图所示,用多层继承结构可以实现,但会出现扩展性问题以及违反单一职责原则(一个类,有两个引起这个类变化的原因)

[工作中的设计模式]桥接模式bridge

一.模式解析: 策略模式一节讲过,通过扩展持有者,使持有者形成抽象类,然后实现多个具体持有者,策略模式可以转化为桥接模式. 桥接模式定义为:将抽象部分与实现部分分离,使它们都可以独立的变化,在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,使用桥接模式可以应对多维度的变化. 主要有两个要点 1.有两个维度的变化,彼此的变化应该不会受到对方的干扰 2.通过接口进行关联,共有n*m种组合 3.其中一个维度,保存这另外一个维度的引用 二.模式代码: 维度一 interface Impl

JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯

分布式开发的历史 利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有兴趣的朋友欢迎参考一下利用远程对象实现分布式开发). 从2003年开始.NET当中就盛传着.NET Remoting远程对象调用的分布式开发,.NET Remoting主要用于管理跨应用程序域的同步和异步RPC 会话.在默认情况下,Remoting可以使用 HTTP 或 TCP 协议进行信息通讯,

类型类 V.S. 桥接模式:撞衫不可怕,谁丑谁尴尬

缘起 设计模式是建立在编程语言层面之上的,从某种角度上看,模式是以应用场景为导向,在编程语言的基础设施之上构建的最佳设计的范本,其价值在于可以作为模版应用于同类场景中.而反过来,语言基础设施的改变必然会影响到上层的设计模式,设计模式和编程语言相互影响,新的编程范式会催生新的设计模式,而成熟的设计模式会引导在语言在基础层面上进行进化从而直接支持!这类的案例是非常多的,比如:Java语言原生支持原型模式.观察者模式,Scala里的Object是原生的单态,等等.本文将要探讨的是在Scala语言中存在

Head First设计模式之桥接模式

一.定义 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. 主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活. 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化. 如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合. 注意事项:对于两个独立变化的维度,使用桥接模式再适合不过了. 二.结构 三.实现 一般写法 namespace DesignPatterns.Bridge { class

设计模式解密(12)- 桥接模式

1.简介 定义:将抽象部分与实现部分分离,使它们都可以独立的变化. 主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活. 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化. 如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合. 注意事项:对于两个独立变化的维度,使用桥接模式再适合不过了. 英文:bridge 类型:结构型 2.问题引入 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面

设计模式 -- 桥接模式(Bridge Pattern)

桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合,减少代码量. 例如: public interface Shape { public void bepaint(String color); } public abstract class Color { Shape shape; public void setShape(Shape shape)