ABSTRACT FACTORY PATTERN LÀ GÌ

     

Pattern sản phẩm công nghệ hai mà mình thích giới thiệu đó là Abstract Factory. Nó hoàn toàn có thể được hình dung như một xí nghiệp sản xuất lớn, phía bên trong có các nhà máy nhỏ tuổi hơn cấp dưỡng ra mọi loạt sản phẩm liên quan mang đến nhau.

Bạn đang xem: Abstract factory pattern là gì

Hãy rước một đơn vị sản xuất ô tô làm cho ví dụ, chẳng hạn Hyundai. Họ bao gồm nhà máy, hoặc xưởng, chế tạo bánh xe: bánh của Azera, bánh của Sonata, bánh của Veloster, v.v… Đến lượt cửa xe, cũng có thể có nhà máy sản xuất cửa Azera, cửa Sonata, cửa ngõ Veloster. Thân xe, đụng cơ, đèn, và các thành phần khác bao gồm nhà máy chế tạo chúng.


*
*
*
*

Bạn cũng cần được kiểm tra các tiêu chí dưới đây.

Hãy để mắt tới liệu việc tự do với các “nền tảng” và việc khởi chế tạo các đối tượng người sử dụng có cần là vụ việc của khối hệ thống hiện tại giỏi không.Làm rõ đâu là “nền tảng”, đâu là “sản phẩm”, và mối quan hệ giữa chúng.Định nghĩa một factory (interface) với vừa đủ các cách tiến hành khởi tạo thành từng sản phẩm.Định nghĩa những lớp dẫn xuất của interface trên, đảm bảo đã “bao gói” những phương thức khởi chế tạo ra (ứng với câu hỏi gọi new).Client không được dùng new mà đề xuất dùng những phương thức mà các bạn đã khai báo sinh hoạt interface.

Code ví dụ

Dưới đó là code lấy ví dụ như về vấn đề khởi tạo những loại CPU, MMU, viết bằng ngôn từ Java.

Các “sản phẩm” (CPU, MMU)

// class CPUabstract class CPU // class EmberCPUclass EmberCPU extends CPU // class EnginolaCPUclass EnginolaCPU extends CPU // class MMUabstract class MMU // class EmberMMUclass EmberMMU extends MMU // class EnginolaMMUclass EnginolaMMU extends MMU Các “nền tảng” thay thể// class EmberFactoryclass EmberToolkit extends AbstractFactory
Override
public MMU createMMU() return new EmberMMU(); // class EnginolaFactoryclass EnginolaToolkit extends AbstractFactory
Override
public MMU createMMU() return new EnginolaMMU(); “Nền tảng” trừu tượngenum Architecture ENGINOLA, EMBERabstract class AbstractFactory private static final EmberToolkit EMBER_TOOLKIT = new EmberToolkit(); private static final EnginolaToolkit ENGINOLA_TOOLKIT = new EnginolaToolkit(); // Returns a concrete factory object that is an instance of the // concrete factory class appropriate for the given architecture. static AbstractFactory getFactory(Architecture architecture) AbstractFactory factory = null; switch (architecture) case ENGINOLA: factory = ENGINOLA_TOOLKIT; break; case EMBER: factory = EMBER_TOOLKIT; break; return factory; public abstract CPU createCPU(); public abstract MMU createMMU();Clientpublic class Client public static void main(String<> args) AbstractFactory factory = AbstractFactory.getFactory(Architecture.EMBER); CPU cpu = factory.createCPU();

Lưu ý

Creational patterns hoàn toàn có thể kết phù hợp với nhau hoặc sửa chữa cho nhau. Và để quyết định dùng pattern nào hoặc phối hợp như thay nào, chúng ta phải để ý trường hòa hợp của mình.

Xem thêm: Cách Đặt Tên Id Tik Tok Hay Nhất 2022 ❤️️250+ Id Tik Tok Đẹp Cực Ngầu

Abstract Factory thường xuyên được phối kết hợp với Factory Method, nhiều khi là cả Protoype nữa.

Abstract Factory có thể thay chũm cho Facade để che giấu những lớp được sệt tả riêng cho từng “nền tảng”.

Phân biệt Abstract Factory cùng Builder. Trong những khi Abstract Factory chú trọng câu hỏi khởi chế tác những nhóm đối tượng có liên quan đến nhau (chiều ngang); thì Builder chú trọng vào việc tạo ra một đối tượng qua nhiều bước nối tiếp nhau, giống hệt như một dây chuyền vậy (chiều dọc). Trường hòa hợp của Abstract Factory, đối tượng được trả về ngay; còn vào trường thích hợp của Builder, đối tượng người tiêu dùng là hiệu quả của cả quá trình.

Thông thường, việc thiết kế khối hệ thống sẽ đi từ Factory Method (dễ hiểu, dễ tuỳ biến) thành Abstract Factory, Prototype, hoặc Builder (mềm dẻo hơn, tinh vi hơn) giả dụ như người xây cất cảm thấy tính mềm mỏng là đề xuất thiết.

Vài lời bình luận

Như vẫn nói làm việc trên, các creational pattern rất có thể thay thế cho nhau hoặc kết phù hợp với nhau tuỳ trả cảnh, và việc thiết kế có thể đi trường đoản cú Factory Method đến Abstract Factory. Tức là bạn bắt buộc xem xét thật kỹ lưỡng bài toán của mình để biết yêu cầu lựa chọn chiến thuật nào, thay vì vội đá quý lựa chọn.

Xem thêm: Thức Ăn Kosher Là Gì ? Những Yêu Cầu Cơ Bản Về Thực Phẩm Kosher

Các pattern được đưa ra ví dụ là đem về cái lợi lớn cho những lập trình viên nhưng chúng ta không nên chịu ảnh hưởng vào chúng. Theo tôi, đừng lúc nào nên trả định rằng: “Chắc tương lai hệ thống sẽ bắt buộc thế này, cụ kia” xuất xắc “Có lẽ sau này hệ thống cần buộc phải mềm dẻo hơn, flexible hơn buộc phải phải lựa chọn Abstract Factory”. Code không nhiều hơn khi nào cũng xuất sắc hơn.