三、访问者模式【Visitor Pattern】
Visitor 定义
作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作.在Java 中,Visitor 模式实际上是分离了collection 结构中的元素和对这些元素进行操作的行为.
用到的场所:
比如我们上级领导要查看员工的信息,但是各个级别不同,向我们淘宝有P4—P9和M1—M4.但是马总可能这次看P8,下次看P9的信息,但是他们都有自己大致的属性,姓名,年龄、性别、工资。但是也有不同的事情。业绩,工作的方向。这是我们就需要定义不同Node。然后访问者(Visitor)把这些信息都加进去。马总就可以通过调用visitNode(里面任何的Node)就可以查看信息了。这样就减少if的判断和switch的应用了。
为何使用Visitor?
Java 的Collection(包括Vector 和Hashtable)是我们最经常使用的技术,可是Collection好象是个黑色大染缸,本来有各种鲜明类型特征的对象一旦放入后,再取出时,这些类型就消失了。那么我们势必要用If 来判断,如:
可见使用Visitor 模式是有前提的,在两个接口Visitor 和Visitable 中,确保Visitor 很少变化,变化的是Visitable,这样使用Visitor 最方便.如果Visitor 也经常变化, 也就是说,对象群中的对象类型经常改变,一般建议是,不如在这些对象类中逐个定义操作.但是Java 的Reflect 技术解决了这个问题。
自动化
就好比我们部门提供自动化工具很多,我们可以建立一个统一的访问方法,我们就可以随着开发和研究人员增添不同的访问者。
四、策略着模式【Strategy Pattern】
Strategy 是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.
Stratrgy 应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy 实现。
自动化的应用:
1、自动化的结果需要很多方面,一些数据总是需要以不同的格式来保存文件或者数据;
2、自动化回归中总是希望可以对错误进行截图,但是会用到不同的算法截获图象;
3、在自动化数据分析中,经常需要以不同的格式输出同样数据的图形,比如曲线、框图bar或者柱形图等形状。