对VISITOR模式的一点疑惑

08-07-31 yongbuyanbai
这里的疑惑是关于这个模式产生原因的迷惑,在GOF设计模式中,是这样说的:

“表示一个作用于某对象结构中的各元素的操作,使你可以在不改变各元素类的前提下定义作用于这些元素的新操作”。

作为一种行为模式,这里是将行为进行封装,也就是上面所说的新操作的加入(变化),不会影响对象结构中的各元素,也就是分离了行为,GOF中举例是编辑器的抽象语法树,说抽象结点的方法和下面继承(实现)的结点,如果将这些方法分散在各个实现类中,如果将来增加一个新的操作会很难维护,所以产生变化的原因是这些类将来有可能增加新的行为操作,我的疑惑就在这里。对于面向对象的设计,类中的行为应该是一个体现类职责的地方,对于高聚集来说应该将他们的行为(职责)尽量体现在类的内部,而不是分散开,但是根据情况也可以进行分散,但是对于这里的 变化是在什么情况下会有呢,难道我们设计的类都需要考虑将来是否有新行为增加这样的变化吗?我们应该在分析的时候考虑变化点的时候考虑,但是这种新行为的增加的变化考虑的出发点在哪里?请BANQ以及各位道友指点!

    

banq
2008-08-16 17:16
>难道我们设计的类都需要考虑将来是否有新行为增加这样的变化吗

是这样

>们应该在分析的时候考虑变化点的时候考虑,但是这种新行为的增加的变化考虑的出发点在哪里?

对象有两个:属性和行为,这两个都可以变化,如果只是行为变化则有相应模式,Visitor是一种。

猜你喜欢