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 Builder 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
Tách việc xây dựng một đối tượng phức tạp khỏi phần biểu diễn của nó để với cùng một quá trình xây dựng có thể tạo ra các biểu diễn khác nhau.
Phần code
"""
Separate the construction of a complex object from its representation so
that the same construction process can create different representations.
"""
import abc
class Director:
"""
Construct an object using the Builder interface.
"""
def __init__(self):
self._builder = None
def construct(self, builder):
self._builder = builder
self._builder._build_part_a()
self._builder._build_part_b()
self._builder._build_part_c()
class Builder(metaclass=abc.ABCMeta):
"""
Specify an abstract interface for creating parts of a Product
object.
"""
def __init__(self):
self.product = Product()
@abc.abstractmethod
def _build_part_a(self):
pass
@abc.abstractmethod
def _build_part_b(self):
pass
@abc.abstractmethod
def _build_part_c(self):
pass
class ConcreteBuilder(Builder):
"""
Construct and assemble parts of the product by implementing the
Builder interface.
Define and keep track of the representation it creates.
Provide an interface for retrieving the product.
"""
def _build_part_a(self):
pass
def _build_part_b(self):
pass
def _build_part_c(self):
pass
class Product:
"""
Represent the complex object under construction.
"""
pass
def main():
concrete_builder = ConcreteBuilder()
director = Director()
director.construct(concrete_builder)
product = concrete_builder.product
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!