设计模式——访问者模式 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
上传用户:上善若水
桂林市房地产信息网方案 前 言 6 第一章 概述 7 1.1定义与简称 7 1.2项目建设背景 7 1.3项目建设目标 8 1.4方案设计原则 8 第二章 需求分析 10 2.1行业需求分析 10 2.1.1国内行业现状 10 2. 2网络系统需求分析 10 2.2.1信息化的扩展 10 2.3 应用系统功能需求分析 11 2.3.1内部业务系统 11 2.3.2信息服务网站 11
上传时间: 2014-08-30
上传用户:yxgi5
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1) 实现哈系表查找算法。 (2) 程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3) 设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该程序进一步改进扩展的设想)。
标签: 技术要求
上传时间: 2013-12-21
上传用户:woshiayin
这个是我设计的采用c8051f330为核心的测温系统源码,包括对ds18b20,at45db081的使用,同时设计了简单的通信协议,串口用了比较好的结构,响应时间短,而且可以进行灵活的扩展,开发环境为keil
上传时间: 2014-01-08
上传用户:秦莞尔w
本文首先深入分析了对象和agent之间的主要区别,进而指出要从这些区别着手,并在agent体系结构、agent实现机制、agent程序设计语言定义等方面进行研究,来对标准的面向对象程序设计模型进行面向agent的扩展以方便软件agent的构造。 作为软件agent的理论基础研究部分,本文通过对著名的BDI agent模型进行改进而给出了一个便于面向对象技术实现的、能够体现agent本质特性的agent体系结构
上传时间: 2014-01-02
上传用户:yyq123456789
数字钟电路系统由主体电路和扩展电路两大部分组成。其中,主体电路完成数字钟的基本功能,扩展电路完成数字钟的扩展功能。用MAXPLUSⅡ进行电路设计与仿真.
上传时间: 2014-01-09
上传用户:kr770906
基于ARM核的GPS接收机的设计 介绍了GPS 接收机的原理以及一款GPS 接收机的实际设计。该GPS 接收机采用Zarlink 公司生产的GP2015 芯片作为 接收机的射频前端, 内嵌ARM7 核的GP4020 芯片作为接收机的数字基带处理器, 并阐述了外围扩展电路及软件设计。该GPS 接收 机消除了以往处理器数据处理的瓶颈效应, 体积小, 功耗低
上传时间: 2015-09-03
上传用户:tedo811
简易数控直流电源 摘要:本实验设计了一个以单片机89C51为基本控制核心的简易数控直流电源。.该设计包括直流电源输入及输出两部分,可完成0~15V之间各不同幅值的电压的输出,能够预置数,能够自动扫描输出电压并直接显示到LED数码显示管上,并可扩展输出三角波等波型。其中电压输出部分,既可手动的每按”+””-”键一下进行每0.1V大小的上下调整,也可长按”+””-”键使其自动的递增或者递减,直到需要的数值。预置数时用切换键切换预置个位或小数位,按”+””-”键进行微调。单片机编程部分是基于WAVE6000软件上设计,并在实物上进行仿真。.该系统具有抗干扰性能好,可靠性高,及最终输出电压值与真实显示值精确度较高等优点。
上传时间: 2013-12-20
上传用户:franktu
设A和B是长度相同的2个字符串。A和B的距离定义为相应位置字符距离之和。2个非空格字符的距离是它们的ASCII码之差的绝对值。空格与空格的距离为0;空格与其它字符的距离为一定值k。 字符串A的扩展是在A中插入若干空格字符所产生的字符串。在字符串A和B的所有长度相同的扩展中,有一对距离最小的扩展,该距离称为字符串A和B的扩展距离。 对于给定的字符串A和B,试设计一个算法,计算其扩展距离。
上传时间: 2014-12-22
上传用户:15736969615
本书透彻讲解了经典的《设计模式:可复用面向对象软件的基础》一书涵盖的23种基本设计模式。本书将这些设计模式分成五类:接口型模式、责任型模式、构造型模式、操作型模式,以及扩展型模式。书中对各个模式进行详细的讲解,并借助UML图例和Java代码来演示这些模式的应用方法,另外还提供了一些实用的例子及有关设计模式的习题、思考题,以启迪读者的思路,使读者在边做边学中提高应用设计模式的实践能力。.. 本书的后面给出了各章节“自我突破”思考题的参考答案。读者可以先经过思考给出自己的答案,然后再与书后的参考答案作比较,这样读者将能够充分理解设计模式在Java应用程序开发中的角色,并能够提高自己在实际工作中应用设计模式的能力
上传时间: 2014-01-11
上传用户:PresidentHuang