前言:
年底,CEO和CTO开始评定员工一年的工作绩效,员工分为工程师和经理,CTO关注工程师的代码量、经理的新产品数量;CEO关注的是工程师的KPI和经理的KPI以及新产品数量。由于CEO和CTO对于不同员工的关注点是不一样的,这就需要对不同员工类型进行不同的处理。访问者模式此时可以派上用场了。
其实就是根据不同的类型执行不同的类。我们首先有一个角色Role。
如果是CTO,那么我们就需要访问代码量+产品数量。
员工基类:
public class Staff {
}
是
- public class Client {
- public static void main(String[] args) {
- // 构建报表
- BusinessReport report = new BusinessReport();
- System.out.println("=========== CEO看报表 ===========");
- report.showReport(new CEOVisitor());
- System.out.println("=========== CTO看报表 ===========");
- report.showReport(new CTOVisitor());
- }
- }
复制代码
所属
- =========== CEO看报表 ===========
- 经理: 经理-A, KPI: 9, 新产品数量: 0
- 工程师: 工程师-A, KPI: 6
- 工程师: 工程师-B, KPI: 6
- 工程师: 工程师-C, KPI: 8
- 经理: 经理-B, KPI: 2, 新产品数量: 6
- 工程师: 工程师-D, KPI: 6
- =========== CTO看报表 ===========
- 经理: 经理-A, 产品数量: 3
- 工程师: 工程师-A, 代码行数: 62558
- 工程师: 工程师-B, 代码行数: 92965
- 工程师: 工程师-C, 代码行数: 58839
- 经理: 经理-B, 产品数量: 6
- 工程师: 工程师-D, 代码行数: 53125
复制代码
总结:
我们学习设计模式的最终目的就是为了能够将我们的程序写的更加的健壮。更加的优雅。我们学习设计模式的目的也并不是
增加一些谈资。访问者常用的场景
Java23种设计模式一览:
单例模式||工厂模式||建造者模式||原型模式
适配器模式||桥接模式||组合模式||装饰模式||外观模式||享元模式||代理模式
职责链模式||命令模式||解释器模式||迭代器模式||中介者模式||备忘录模式||观察者模式||状态模式||策略模式||模板方法模式||访问者模式
参考:Android源码设计模式解析与实战
http://xuejava.org/thread-472-1-1.html |