【Adapter模式】
Adapter适配器模式是为了解决这样的一个问题:我已经在应用程序中设计好了接口,但是这个接口和第三方提供的接口不一致,为了使得这些 接口不兼容的类可以在一起工作,Adapter模式将一个类的第三方的接口转化为应用程序需要调用的接口。
Adapter模式的实现有两种途径,一种是利用类的继承,一种是利用类的组合(聚合)(直接调用)来实现。即“接口继承”和“实现继承"的区别, 接口继承是指通过子类获得了父类的接口,而实现继承是指通过继承,子类获得父类的实现。C++中public继承即是接口继承和实现继承,既 继承了父类的接口又获得了父类的实现。一般来说通过private继承只获得实现继承,而接口的继承在C++中是通过在基类中的纯虚函数 virtual、=0来实现的。
【图解】
以笔记本电脑只能插USB鼠标为例,现有一个PS接口的鼠标,需要用一个PS/USB的Adapter来转换。
【程序】
【输出】
【Chain Of Responsibility模式】
Chain Of Responsibility模式是为了将可能处理一个请求的对象链接成一个对象的链条,并将请求在这个链条上传递,知道有对象处理该请求。(可能需要提供一个默认出苦力所有请求的类,最后)。该模式最大的好处就是给系统降低耦合性,请求的发送者完全不知道该请求会被哪个对象处理,极大的降低了系统的耦合性。
【图解】
以医院系统为例,县级医院治不了的病,自动转院到市级医院,市级医院仍然解决不了的疑难杂症自动转到省级医院治疗。
一个病人到县级医院去看病的情况,而他的病情是疑难杂症,从县级医院转到市级医院最后转到了省级医院。县级医院的上级医院是市级医院,而市级医院的上级是省级医院。病人不必关心该县级医院是否能治,不能治的话直接有该医院转到挂靠的上级市医院。
【程序】
【输出】