Search…

Design Pattern: Adapter Pattern

25/09/20201 min read
Adapter Pattern thay đổi giao diện của lớp mà không cần định nghĩa lại lớp khác.

Adapter Pattern

Adapter Pattern là gì?

Adapter Pattern giữ vai trò trung gian giữa hai lớp, chuyển đổi giao diện của 1 hay nhiều lớp có sẵn thành 1 giao diện khác, thích hợp cho lớp đang viết. Điều này cho phép các lớp có các giao diện khác nhau có thể dễ dàng giao tiếp tốt với nhau thông qua giao diện trung gian, không cần thay đổi code của lớp có sẵn cũng như lớp đang viết.

Ví dụ

Thiết kế 1 giao diện hình tròn gồm: 1 điểm trên trái và bán kính. Vấn đề xảy ra khi xét va chạm giữa 2 hình tròn là hàm xét va chạm cần tham số truyền vào là 2 hình tròn với giao diện là tâm là bán kính, nhưng giao diện hình tròn là điểm trên trái và bán kính. Vì vậy sử dụng Adapter Pattern để thay đổi giao diện hình tròn, hãy theo dõi đoạn code sau.

class CircleClient
{
public:
	virtual void draw() = 0;
};

class CircleAdaptee
{
public:

	CircleAdaptee(float x, float y, float R)
	{
		x1 = x;
		y1 = y;
		R1 = R;
		cout << " Circle Adaptee draw " << endl;
		cout << "Toa do goc tren trai (" << x1 << "," << y1 << ") Ban kinh = " << R1 << endl;
	}
protected:
	float x1;
	float y1;
	float R1;
};

class CircleAdapter : public CircleClient, private CircleAdaptee
{
public:
	CircleAdapter(float x, float y, float R) :
		CircleAdaptee(x, y, R) {};
	virtual void draw()
	{
		
		cout << "Circle Client draw" << endl ;
		cout << "Tam I (" << x1 + R1 << "," << y1 + R1 << ")    Ban kinh R = " << R1 << endl;
	
	}
};

Download code

Adapter Design Pattern.zip

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024