Qua các series tự học về Design Pattern, Hôm nay cafedevn chia sẻ cho ace ví dụ và code cụ thể về cách sử dụng Command design pattern với ngôn ngữ lập trình Python. Nhằm giúp ace hiểu rõ cách sử Pattern này với Python một cách nhanh nhất và áp dụng nó vào thực tế.
Nội dung chính
Mô tả code
Đóng gói một yêu cầu dưới dạng một đối tượng, do đó cho phép bạn tham số hóa khách hàng với các yêu cầu khác nhau, yêu cầu hàng đợi hoặc nhật ký và hỗ trợ hoạt động hoàn tác
Phần code
"""
Encapsulate a request as an object, thereby letting you parameterize
clients with different requests, queue or log requests, and support
undoable operations.
"""
import abc
class Invoker:
"""
Ask the command to carry out the request.
"""
def __init__(self):
self._commands = []
def store_command(self, command):
self._commands.append(command)
def execute_commands(self):
for command in self._commands:
command.execute()
class Command(metaclass=abc.ABCMeta):
"""
Declare an interface for executing an operation.
"""
def __init__(self, receiver):
self._receiver = receiver
@abc.abstractmethod
def execute(self):
pass
class ConcreteCommand(Command):
"""
Define a binding between a Receiver object and an action.
Implement Execute by invoking the corresponding operation(s) on
Receiver.
"""
def execute(self):
self._receiver.action()
class Receiver:
"""
Know how to perform the operations associated with carrying out a
request. Any class may serve as a Receiver.
"""
def action(self):
pass
def main():
receiver = Receiver()
concrete_command = ConcreteCommand(receiver)
invoker = Invoker()
invoker.store_command(concrete_command)
invoker.execute_commands()
if __name__ == "__main__":
main()
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Tài liệu từ cafedev:
- Full series tự học Design Pattern từ cơ bản tới nâng cao tại đây nha.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!