[GoF设计模式]Adapter模式和Chain Of Responsibility模式的C++实现

本文介绍了如何在C++中实现Adapter模式,包括类继承方式和对象组合方式,以解决接口不兼容问题。同时,文章还展示了Chain Of Responsibility模式的应用,通过创建一个医院分级治疗的实例,说明如何构建处理请求的对象链。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Adapter模式】

 Adapter适配器模式是为了解决这样的一个问题:我已经在应用程序中设计好了接口,但是这个接口和第三方提供的接口不一致,为了使得这些  接口不兼容的类可以在一起工作,Adapter模式将一个类的第三方的接口转化为应用程序需要调用的接口。

 Adapter模式的实现有两种途径,一种是利用类的继承,一种是利用类的组合(聚合)(直接调用)来实现。即“接口继承”和“实现继承"的区别,  接口继承是指通过子类获得了父类的接口,而实现继承是指通过继承,子类获得父类的实现。C++中public继承即是接口继承和实现继承,既  继承了父类的接口又获得了父类的实现。一般来说通过private继承只获得实现继承,而接口的继承在C++中是通过在基类中的纯虚函数  virtual、=0来实现的。

【图解】

 以笔记本电脑只能插USB鼠标为例,现有一个PS接口的鼠标,需要用一个PS/USB的Adapter来转换。

 

1

【程序】

 

 

 

 

【输出】

1

 

【Chain Of Responsibility模式】

Chain Of Responsibility模式是为了将可能处理一个请求的对象链接成一个对象的链条,并将请求在这个链条上传递,知道有对象处理该请求。(可能需要提供一个默认出苦力所有请求的类,最后)。该模式最大的好处就是给系统降低耦合性,请求的发送者完全不知道该请求会被哪个对象处理,极大的降低了系统的耦合性。

【图解】

以医院系统为例,县级医院治不了的病,自动转院到市级医院,市级医院仍然解决不了的疑难杂症自动转到省级医院治疗。

一个病人到县级医院去看病的情况,而他的病情是疑难杂症,从县级医院转到市级医院最后转到了省级医院。县级医院的上级医院是市级医院,而市级医院的上级是省级医院。病人不必关心该县级医院是否能治,不能治的话直接有该医院转到挂靠的上级市医院。

4

【程序】

 

 

 

 

 


【输出】

7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值