我是c ++开发人员,并尝试了解设计模式。在结构模式中有一个特定的模式称为适配器模式。我如何从GOF书中理解这个模式。在这种模式中,有可插拔的适配器模式,这非常令人困惑,无法理解。谷歌搜索很多,但无法找到满意的答案。任何人都可以解释什么是可插拔的适配器设计模式,用c ++示例?以及正常适配器模式和可插拔适配器模式之间的区别。 提前致谢
答案 0 :(得分:0)
请检查此问题的答案是否令您满意。我认为无法更好地解释可插拔:Can anybody explain the concept of pluggable adapter to me with good example?
答案 1 :(得分:0)
以下示例符合以下条件:
适配器应该支持适应者(不相关且具有 不同的接口)使用相同的旧目标接口 客户端。
此示例使用C ++ 11 lambda实现与委托相同的功能。
#include <iostream>
#include <functional>
//Adaptee 1
struct CoffeMaker {
void Brew (double quantity, double temp) const{
std::cout << "I am brewing " << quantity <<"ml coffee @" << temp <<" degree C" <<std::endl;
}
};
//Adaptee 2 (having difference interface from Adaptee 2)
struct JuiceMaker{
void Squeeze (double quantity) const{
std::cout << "I am making " << quantity <<"ml Juice" <<std::endl;
}
};
// Target
struct Beverage{
virtual void getBeverage (int quantity) = 0;
};
// Adapter
class Adapter : public Beverage{
std::function<void(int)> Request;
public:
Adapter(CoffeMaker *cm1){
Request = [cm1](int quantity){
cm1->Brew(quantity,80);
};
delete cm1;
}
Adapter(JuiceMaker *jm1){
Request = [jm1](int quantity){
jm1->Squeeze(quantity);
};
delete jm1;
}
void getBeverage(int quantity){
Request(quantity);
}
};
//Client
int main(){
Adapter adp1(new CoffeMaker());
adp1.getBeverage(30);
Adapter adp2(new JuiceMaker());
adp2.getBeverage(40);
}
虽然此示例基于此article,但我在其可插入适配器示例中有一些异议