设计模式之访问者模式实例(c++)

本文介绍了设计模式中的访问者模式,详细阐述了如何在购物车场景中应用该模式。通过创建抽象访问者、具体访问者、抽象元素、具体元素和对象结构等角色,实现了在不修改产品类的情况下,为产品类增加新的操作。文章以C++代码展示了购物车类(BuyBasket)如何与商品类(如Apple、Book)互动,以及顾客类(Customer)和收银员类(Saler)如何作为访问者进行操作。
摘要由CSDN通过智能技术生成

访问者模式

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

访问者模式包含Visitor(抽象访问者)、ConcreteVisitor(具体访问者)、Element(抽象元素)、ConcreteElement(具体元素)和ObjectStructure(对象结构)。

访问者模式实例之购物车

从类图可知,BuyBasket(购物车)添加、删除(关联)Product(产品),并由accept函数传递Visitor参数供Product被动访问(实际是在Product里调用Visitor的visit函数,并传递this指针来判断具体的某个产品(重载))。

下面是c++版本的实现。

抽象访问者Visitor(访问者类)

//抽象访问者Visitor(访问者类)
class Apple;
class Book;
class Visitor{
public:
	void setName(string name){
		this->name = name;
	}
	
	virtual void visit(Apple *apple) &#
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值