ABSTRACT FACTORY PATTERN LÀ GÌ

  -  

Pattern thứ nhì cơ mà mình thích giới thiệu chính là Abstract Factory. Nó hoàn toàn có thể được hình dung nlỗi một xí nghiệp sản xuất mập, phía bên trong tất cả những nhà máy nhỏ hơn cung ứng ra hầu hết loạt sản phẩm liên quan đến nhau.

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

Hãy mang một hãng sản xuất ô tô làm cho ví dụ, ví dụ điển hình Hyundai. Họ gồm xí nghiệp sản xuất, 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, cũng có xí nghiệp sản xuất chế tạo cửa ngõ Azera, cửa ngõ Sonata, cửa Veloster. Thân xe, hộp động cơ, đèn, với các nhân tố không giống có những nhà máy sản xuất sản xuất bọn chúng.


*
*
*
*

Bạn cũng cần kiểm tra các tiêu chuẩn sau đây.

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

Code ví dụ

Dưới đấy là code ví dụ về vấn đề khởi tạo những các 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” 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 rất có thể kết phù hợp với nhau hoặc sửa chữa thay thế cho nhau. Và để ra quyết định sử dụng pattern như thế nào hoặc phối kết hợp ra sao, các bạn nên lưu ý trường hợp của chính bản thân mình.

Xem thêm: Cách Tính Điểm Rank Pubg Mobile Nhanh Nhất, Hướng Dẫn Xem Rank Pubg Mobile, Pc

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

Abstract Factory rất có thể sửa chữa thay thế mang đến Facade nhằm che giấu phần đông lớp được sệt tả riêng cho từng “nền tảng”.

Phân biệt Abstract Factory với Builder. Trong khi Abstract Factory chú trọng bài toán khởi sinh sản những nhóm đối tượng người sử dụng gồm tương quan mang lại nhau (chiều ngang); thì Builder chú ý vào câu hỏi tạo thành một đối tượng qua các bước nối liền nhau, y như một dây chuyền vậy (chiều dọc). Trường vừa lòng của Abstract Factory, đối tượng người tiêu dùng được trả về ngay; còn vào ngôi trường đúng theo của Builder, đối tượng người tiêu dùng là hiệu quả của cả quy trình.

Thông thường, việc kiến thiết khối hệ thống vẫn đ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 dẻo rộng, phức hợp hơn) nếu nlỗi fan xây dựng cảm giác tính mềm mỏng là quan trọng.

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

Nhỏng sẽ nhắc tới ở bên trên, các creational pattern rất có thể sửa chữa thay thế lẫn nhau hoặc kết hợp với nhau tuỳ hoàn cảnh, và việc kiến tạo hoàn toàn có thể đi từ bỏ Factory Method cho Abstract Factory. Tức là chúng ta yêu cầu để mắt tới thiệt kỹ càng bài tân oán của bản thân để biết cần sàng lọc phương án làm sao, cầm bởi vì vội vã sàng lọc.

Xem thêm: " Blue Collar Là Gì : Định Nghĩa, Ví Dụ Trong Tiếng Anh, Nguồn Gốc Của Blue

Các pattern được giới thiệu cụ thể là mang về chiếc lợi béo cho những lập trình sẵn viên nhưng mà các bạn không nên phụ thuộc vào chúng. Theo tôi, chớ bao giờ bắt buộc đưa định rằng: “Chắc tương lai khối hệ thống sẽ đề xuất chũm này, rứa kia” tuyệt “Có lẽ sau này hệ thống rất cần được mềm dẻo rộng, flexible hơn phải đề nghị lựa chọn Abstract Factory”. Code thấp hơn bao giờ cũng xuất sắc hơn.