ABSTRACT FACTORY PATTERN LÀ GÌ

Pattern vật dụng nhì nhưng mà mình muốn ra mắt đó là Abstract Factory. Nó rất có thể được hình dung nhỏng một nhà máy lớn, phía bên trong có những xí nghiệp sản xuất nhỏ tuổi rộng cấp dưỡng ra đông đảo loạt sản phẩm tương quan đến nhau.

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

Hãy lấy một nhà phân phối xe hơi có tác dụng ví dụ, chẳng hạn Hyundai. Họ bao gồm nhà máy, hoặc xưởng, sản xuất 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 ngõ xe pháo, cũng đều có nhà máy chế tạo cửa ngõ Azera, cửa Sonata, cửa Veloster. Thân xe, bộ động cơ, đèn, cùng các thành phần khác bao hàm nhà máy chế tạo bọn chúng.


*
*
*
*

Quý Khách cũng cần được khám nghiệm những tiêu chuẩn sau đây.

Hãy lưu ý liệu vấn đề hòa bình với những “nền tảng” với câu hỏi khởi tạo thành những đối tượng người dùng liệu có phải là vấn đề của hệ thống hiện tại hay là không.Làm rõ đâu là “nền tảng”, đâu là “sản phẩm”, với mối quan hệ giữa bọn chúng.Định nghĩa một factory (interface) với không hề thiếu những phương thức 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 bên trên, bảo đảm an toàn vẫn “bao gói” các cách tiến hành khởi chế tạo (ứng với việc gọi new).Client ko được dùng new nhưng đề xuất dùng những cách làm mà lại các bạn sẽ knhị báo làm việc interface.

Code ví dụ

Dưới đấy là code ví dụ về việc khởi tạo ra những một số loại CPU, MMU, viết bởi 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” nạm 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 hợp với nhau hoặc sửa chữa thay thế lẫn nhau. Và để quyết định sử dụng pattern làm sao hoặc kết hợp ra sao, bạn phải để mắt tới ngôi trường vừa lòng của mình.

Xem thêm: Những Gì Vần Với Ênh ? (Tiếng Việt) Từ Nào Sau Đây Có Tiếng Chứa Vần Ênh

Abstract Factory thường xuyên được phối hợp với Factory Method, đôi lúc là cả Protoype nữa.

Abstract Factory rất có thể sửa chữa cho Facade nhằm đậy giấu số đông lớp được quánh tả riêng biệt mang lại từng “nền tảng”.

Phân biệt Abstract Factory với Builder. Trong khi Abstract Factory chú ý bài toán khởi tạo nên những nhóm đối tượng bao gồm liên quan mang lại nhau (chiều ngang); thì Builder chú ý vào việc tạo nên một đối tượng người sử dụng qua những bước tiếp liền nhau, y 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 người dùng được trả về ngay; còn vào trường hòa hợp của Builder, đối tượng người tiêu dùng là công dụng của tất cả quá trình.

thường thì, bài toán thi công hệ thống đã đi từ Factory Method (dễ nắm bắt, dễ dàng tuỳ biến) thành Abstract Factory, Prototype, hoặc Builder (mềm mỏng hơn, tinh vi hơn) trường hợp nlỗi bạn thiết kế Cảm Xúc tính mềm mỏng là cần thiết.

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

Như đang nhắc tới ở bên trên, các creational pattern có thể sửa chữa cho nhau hoặc kết hợp với nhau tuỳ yếu tố hoàn cảnh, với Việc xây đắp rất có thể đi tự Factory Method mang đến Abstract Factory. Tức là bạn phải xem xét thật kỹ càng bài tân oán của mình để tìm hiểu yêu cầu chọn lựa chiến thuật làm sao, vậy do cuống quýt lựa chọn.

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