Design Patterns trong Python

Adapter Pattern in Python

Tìm hiểu Adapter Pattern in Python qua ví dụ thực tế có thể chỉnh sửa và chạy online.

Adapter Pattern là gì?

Tìm hiểu Adapter Pattern in Python qua ví dụ thực tế có thể chỉnh sửa và chạy online.

Khi nào nên sử dụng?

  • Giải quyết các vấn đề thiết kế phần mềm thường gặp bằng những design pattern đã được kiểm chứng.
  • Tách biệt trách nhiệm giữa các thành phần để code dễ mở rộng và kiểm thử hơn.
  • Sử dụng tên design pattern thống nhất khi thảo luận về kiến trúc phần mềm trong team.

Code ví dụ

Chạy code →
main.py
class LegacyGateway:
    # Adapter: wrap an incompatible API with the expected interface.
    def make_payment(self, cents):
        return f"PAY {cents / 100:.2f}"


class PaymentAdapter:
    def __init__(self, gateway):
        self.gateway = gateway

    def pay(self, dollars):
        # Translate both the method name and amount format.
        return self.gateway.make_payment(round(dollars * 100))


gateway = PaymentAdapter(LegacyGateway())
print(gateway.pay(25))

Kết quả dự kiến

PAY 25.00

Cách hoạt động

Ví dụ này minh hoạ Adapter Pattern in Python. Hãy thay đổi dữ liệu đầu vào để hiểu rõ cách code hoạt động.

Thay đổi giá trị và chạy chương trình bằng trình chạy Python online của CodeUtility mà không cần cài Python.

Bài tập mở rộng

Hãy sửa code theo các bài tập dưới đây để hiểu rõ cách hoạt động thay vì chỉ sao chép kết quả.

  1. Thay đổi domain của ví dụ nhưng vẫn giữ nguyên cấu trúc của design pattern.
  2. So sánh design pattern với một implementation đơn giản hơn và giải thích các trade-off.
  3. Viết test cho từng thành phần trước khi thêm một implementation khác.
Chạy trong Python IDE →