设计模式——访问者模式 Visitor模式允许我们在不改动原有结构的基础之上不断增加新的功能。 ICumulation接口定义了方法Cumulate(),旨在计算1+2+……+n,有两种不同的实现方法,一个是一般的叠加算法GeneralArithmetic,一个是高斯算法GaoSiArithmetic。 因为某种原因,系统需要添加求平均值的功能,还有计算1到n的平方和。 按照一般的思路,我们需要在ICumulation中定义两个方法分别计算平均值和平方和,并在实现类中同时添加相应的方法。在搭建了visitor模式的架构以后,添加功能的代码被移植到ICumulationVisitor中,添加的两种功能也分别被以子类AverageVisitor和PowerVisitor实现。 功能的扩展从在类中添加方法的方式变成了添加新类的方式,该类继承一定的Visitor接口。这是一个90度的转换,使得架构符合开放封闭(OCP)原则:功能的扩展无需改动原有代码。 同时,这里也体现了单一职责原则(SRP),ICumulation层次结构可以因为出现了不同的算法而改变,但是不应该因为需要计算不同的东西(功能)而改变,算法和功能是横向和纵向的关系。这里visitor模式隔离了算法和功能,ICumulation层次结构负责算法,ICumulationVisitor层次结构负责功能。
标签: ICumulation Cumulate Visitor 模式
上传时间: 2015-06-12
上传用户:上善若水
对应做b/s开发的程序员来说,eWebEdit这个名字肯定不会陌生吧,这个是其最新版本(ASP)的超文本编辑器,功能强大到有些恐怖,强烈推荐使用
标签: 程序员
上传时间: 2014-11-30
上传用户:cuibaigao
学生选课系统设计 背景 教务处在正常运营中必须面对大量课程、学生信息以及两者间相互联系产生的选课信息。现有的人工记录方法既效率低又错误过多,大大影响了教务员的正常管理工作。因此需要对课程资源、学生信息、选课信息、修改信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。 系统目标 该系统用于提高教务处的工作效率,有利于学校加速其实现教务信息化的进程,方便用户之间信息的交流,简化学生选课的流程。在学校内部的现有局域网这个网络环境下,信息由各用户在规定的权限下在各自的工作站上录入,信息上网后各用户可查询,选课,修改,管理,达到信息共享。
上传时间: 2014-01-01
上传用户:asasasas
【问题描述】已知线性方程组AX=B,求解该方程组。参考算法: 消去法:将列向量B加到矩阵A的最后一列,构成增广矩阵AB。对AB进行下列三种初等变换,使原矩阵A的部分的主对角线上的元素均为1,其余元素均为0,则原列向量B的部分即为X的值: 1. 将矩阵的一行乘以一个不为0的数 2. 将矩阵的一行加上另一行的倍数 3. 交换矩阵中两行的位置
上传时间: 2015-06-18
上传用户:stvnash
本书介绍了嵌入式微计算机系统的通用设计方法并提供了详细的Motorola6805,6808,6811和6812的应用示例.
上传时间: 2013-12-24
上传用户:小码农lz
基于IAR集成开发平台的ARM程序设计方法.pdf
上传时间: 2015-06-19
上传用户:lo25643
辨别成绩的小程序,比如说得5分是A,得4分是B,依次类推
上传时间: 2013-12-19
上传用户:ANRAN
词法分析器编译原理课程设计作业的一个组成部分,用面向对象方法设计
上传时间: 2013-12-31
上传用户:xjz632
完成Windows程序中计算器中的所有功能,使用类似Windows计算器的图形界面; (2) 使用可视化方法设计,并编写合适的按钮和菜单事件代码; (3) 使用delphi语言编写代码 程序具有处理异常的能力,以防止用户输入和操作错误而导致的异常
上传时间: 2015-06-20
上传用户:hxy200501
题目:A、B两个以单链表做存储结构的递增有序排列的链表合并为一个单链表做存储结构的递增有序链表C
上传时间: 2015-06-20
上传用户:黑漆漆