架构师内功心法24——访问者模式

    1、定义:是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某种数据结构中的各元素的操作。属于行为型模式。

    2、特征:可以在不改变数据结构的前提下定义作用于这些元素的新操作。

    3、适用场景:

        a.数据结构稳定,作用于数据结构的操作经常变化的场景;

        b.需要数据结构与数据操作分离的场景;

        c.需要对不同数据类型(元素)进行操作,而不使用分支判断具体类型的场景。

    4、优点:

        a.解耦了数据结构与数据操作,使得操作集合可以独立变化;

        b.扩展性好:可以通过扩展访问者角色,实现对数据集的不同操作;

        c.元素具体类型并非单一,访问者均可操作;

        d.各角色职责分离,符合单一职责原则。

    5、缺点:

        a.无法增加元素类型:若系统数据结构对象易于变化,经常有新的数据对象增加进来,则访问者类必须增加对应元素类型的操作,违背了开闭原则;

        b.具体元素变更困难:具体元素增加属性,删除属性等操作会导致对应的访问者类需要进行相应的修改,尤其当有大量访问者类时,修改范围太大;

        c.违背依赖倒置原则:为了达到“区别对待”,访问者依赖的是具体元素类型,而不是抽象。

    6、源码中的体现:jdk中的FileVisitor,spring中的BeanDefinitionVisitor。


代码


类图


Employee


IVisitor


Engineer


Manager


CTOVistitor


CEOVistitor


BusinessReport


Test

你可能感兴趣的:(架构师内功心法24——访问者模式)