-
访问者模式是一种行为设计模式
-
访问者模式被用在针对一组相同类型对象的操作
-
优点是,可以把针对此对象的操作逻辑转移到另外一个类上
-
适合场景:
-
对象结构比较稳定,但经常需要在此对象结构上定义新的操作
-
对一个对象结构中的对象进行很多不同的且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类
-
UML图:
添加不同类型商品的购物车,当点击结算的时候,它计算出所有不同商品需付的费用
通过访问者模式把计算逻辑转移到了另外一个类(访问者)上面
商品接收访问者 accept(Visitor visitor),通过 visitor.visit(this) ,把商品本身传给访问者,访问者接收传递过来的商品,然后可以对该商品进行费用计算的逻辑,这样计算的逻辑就与商品本身解耦了。当计算逻辑发生变化后,不影响商品
商品接口类 Goods
package visitor.goods;
import visitor.visitor.Visitor;
/**
* @author 土味儿
* Date 2021/8/3
* @version 1.0
* 商品接口
* 被访问者
*/
public interface Goods {
/**
* 接受访问者
* 返回值为该商品的费用
* 交给访问者去计算
* @param visitor
* @return
*/
public int accept(Visitor visitor);
public String getName();
public int getNum();
publi