某软件公司需要设计一个源代码解析工具,该工具可以对源代码进行解析和处理,在该工具的初始版本中,主要提供了以下 3 个功能。所有代码和接口均在一个package内。

目录

作业内容

一、UML图

二、代码

1.Visitor类

2.Element接口

3.Code类

4.SizeVisitor类

5.TypeVisitor类

6.CalcVisitor类

7.Test类


作业内容

某软件公司需要设计一个源代码解析工具,该工具可以对源代码进行解析和处理,在该工具的初始版本中,主要提供了以下 3 个功能。
(1) 度量软件规模。可以统计源代码中类的个数、每个类属性的个数以及每个类方法的个数等。
(2) 提取标识符名称,以便检查命名是否合法和规范。可以提取类名、属性名和方法名等。
(3) 统计代码行数。可以统计源代码中每个类和每个方法中源代码的行数。
将来还会在工具中增加一些新功能,为源代码中的类、属性和方法等提供更多的解析操
作。现采用访问者模式设计该源代码解析工具,可将源代码中的类、属性和方法等设计为待
访问的元素,上述不同功能由不同的具体访问者类实现,绘制对应的类图并编程模拟实现

一、UML图

二、代码

1.Visitor类

public abstract class Vistor {public abstract void visit(Code code);
}

2.Element接口

public interface Element {public abstract void accept(Vistor v);
}

3.Code类

public class Code implements Element{private String name;public Code(String name){this.name = name;}public String getName(){return this.name;}@Overridepublic void accept(Vistor v) {v.visit(this);}
}

4.SizeVisitor类

public class SizeVisitor extends Vistor{@Overridepublic void visit(Code code) {System.out.println(code.getName() + "调用了度量软件规模方法");}
}

5.TypeVisitor类

public class TypeVisitor extends Vistor{@Overridepublic void visit(Code code) {System.out.println(code.getName()+"调用了提取标识符名称方法");}
}

6.CalcVisitor类

public class CalcVisitor extends Vistor{@Overridepublic void visit(Code code) {System.out.println(code.getName()+"调用了统计代码行数方法");}
}

7.Test类

public class Test {public static void main(String[] args) {SizeVisitor sizeVisitor = new SizeVisitor();CalcVisitor calcVisitor = new CalcVisitor();TypeVisitor typeVisitor = new TypeVisitor();Code code1 = new Code("代码1");Code code2 = new Code("代码2");System.out.println("代码1调用方法");code1.accept(sizeVisitor);code1.accept(calcVisitor);code1.accept(typeVisitor);System.out.println("代码2调用方法");code2.accept(sizeVisitor);code2.accept(calcVisitor);code2.accept(typeVisitor);}
}

Java设计模式作业-访问者模式相关推荐

  1. Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)

    Java设计模式Ⅶ 1.访问者模式 1.1 访问者模式概述 1.2 代码理解 2.迭代器模式 2.1 迭代器模式概述 2.2 代码理解 3.观察者模式 3.1 观察者模式概述 3.2 代码理解 4.中 ...

  2. JAVA设计模式之访问者模式

    转自: http://www.kongzid.com/archives/design20 ,更好阅读体验:http://www.kongzid.com 访问者模式(Visitor)的定义 表示一个作用 ...

  3. java设计模式-18访问者模式

    定义 封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. 在被访问的类里面加一个对外提供接待访问者的接口 需要对一个对象结构中的对象进行很多不同操作 ...

  4. Java设计模式:访问者模式,同一数据对象,不同访问者索取目的不同

    /*** 员工接受不同部门的数据访问. * 但是不同部门访问该名员工获取的数据不相同.* * @author zhangfly** @param <T>*/ public abstract ...

  5. 由电脑专卖系统引发的Java设计模式:访问者模式

    访问者模式 定义 意图 解决问题 何时使用 优缺点 结构 电脑专卖系统 定义 访问者模式是对象的行为型模式,它的目的是封装一些施加于某些数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的 ...

  6. Java设计模式作业-责任链模式

    Java设计模式作业-责任链模式:Web过滤器 文章目录 前言 一.类图 二.代码及测试结果 1.Trouble类 2.Support类 3.CharSupport类 4.TypeTransformS ...

  7. Java设计模式分为创建模式, 结构模式, 行为模式 3种类型

    Java设计模式之创建模式包括: Factory,    工厂模式 Singleton,   单例模式 Builder,    建造模式 Prototype,    原型模式 Java设计模式之结构模 ...

  8. java备忘录模式应用场景_图解Java设计模式之备忘录模式

    图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...

  9. Java设计模式之策略模式与状态模式

    一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...

最新文章

  1. Arrays.binarySearch 面试的坑
  2. 二叉排序树(BST)构造与应用
  3. 【.Net Micro Framework PortingKit - 08】GPIO驱动
  4. python的认识_认识Python和基础知识
  5. svg mysql_!!!常用SVG代码
  6. java如何实现不固定个数传参
  7. 访问控制 > 教程 > 利用标签对ECS实例进行分组授权
  8. Android应用程序层的作用,Android应用程序框架-004.bean层
  9. ubuntu下virtualbox安装windows7
  10. Tensorrt笔记(七)Tensorrt使用问题整理
  11. graphpad做柱状图_轻松搞定各种柱状图
  12. 浅析Promise的then方法
  13. 【VB数组小例】产生随机数并求和(附带添加图片用法)
  14. Brachistochrone curve(传说中的最速降线)
  15. 第一篇 微信开发 准备工作(转载自walkingmanc的专栏)【转】
  16. rar格式压缩包无法下载,zip可以下载
  17. powerdesigner CDM中联系理解
  18. .m3u8视频文件的初步探索
  19. 【图文并茂】教你在线一键重装正版Win10系统
  20. matlab计算产汇流,《产汇流计算》PPT课件

热门文章

  1. 新射雕群侠传之铁血丹心服务器维护,《新射雕群侠传之铁血丹心》千人新服紧急新开 更新最新版领取独家礼包...
  2. vanilla_如何使用Vanilla JavaScript构建钢琴键盘
  3. Rust学习:5_所有权与借用
  4. 鸿蒙 林蒙什么关系,斗鱼林蒙叫什么 拖米林蒙双排怎么回事
  5. PC端品优购网页制作(common.css)
  6. html canvas生成图片,html5 canvas画板涂鸦生成图片代码
  7. 爱奇艺分类点击实时统计
  8. macos终端命令_M-cli为初学者简化了macOS的最佳终端命令
  9. 赛灵思7系列 ODDR、IDDR原语 与 ultrascale系列ODDRE1 、IDDRE1 原语
  10. 英语是计算机编程的灵魂,计算机语言的灵魂:范式