[DP] Adapter pattern

      Comments Off on [DP] Adapter pattern

Adapter pattern giúp các class không liên quan đến nhau có thể làm việc cùng nhau
ví dụ: Sạc điện thoại 5V từ nguồn điện 220V, ổ điện 3 chân có thể cắm vào ổ 2 chân.

Đối với pattern này quan trọng nhất là phải xác định được Target ( Mục đích đầu ra của mình là gì). Còn phần adapter sẽ chia ra làm 2 phần adapter và adaptee.

Có thể có nhiều adapter khác nhau: adapter_VN, adapter_CHINA, adapter_SS.. tương ứng với tiêu chuẩn adaptee khác nhau => cần nhiều adapter => cần quan hệ kế thừa.

Mỗi loại adapter chỉ tương thích với 1 kiểu adaptee khác nhau.

#include <iostream>

class Target{
public:
	virtual void charge_5v()=0; // pure virtual function
};

class Adaptee{
public:
	void convert_220v_to_5v(){
		std::cout <<"convert 220v to 5v"<<std::endl;
	}
};

class Adapter: public Target {
	Adaptee a;
public:
	void charge_5v() override{
		a.convert_220v_to_5v();
		std::cout <<"charge 5v"<<std::endl;
	}
};
int main(){
	Target* t = new Adapter();
	t->charge_5v();
	delete t;
	return 0;
}