r模式该如何进行扩展呢?”我自己问自己。毕竟在企业级应用中,各组成的扩展性可以很大程度上决定
系统的维护性和扩展性。
?
我注意到上面的Visitor模式实现中主要分为两大类类型:IVehicle和ISales。在该Visitor实现中添加一个新的汽车类型十分容易。从IVehicle派生并实现相应的逻辑即可:
?
1 class Fiat : public IVehicle
2 {
3 public:
4 ? ? virtual double Visit(Sales& sales) { return 0.05; }
5 ? ? virtual double Visit(SalesManager& salesManager) { return 0.06; }
6 };
但是添加一个实现了ISales接口的类型则非常困难:需要更改所有已知的汽车类型并添加特定于该接口实现类型的重载。
?
那在遇到两部分组成都需要更改的情况该怎么办呢?经过查找,我也发现了一种允许同时添加两类型的模式:Acyclic Visitor。除此之外,还有一系列相关的模式,如Hierachical Visitor Pattern。看来和Visitor模式相关的各种知识还真是不少呢。
?
我再次打开搜索引擎,继续我的自我学习之旅。而身边的同事也继续和水果奋斗着。