Pattern đồ vật hai nhưng mình muốn trình làng đó là Abstract Factory. Nó có thể được tưởng tượng nhỏng một nhà máy lớn, phía bên trong bao gồm những xí nghiệp sản xuất nhỏ dại hơn cung cấp ra số đông loạt thành phầm liên quan mang lại nhau.

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

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


*
*
*
*

quý khách cũng cần đánh giá các tiêu chuẩn tiếp sau đây.

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

Code ví dụ

Dưới đấy là code ví dụ về việc khởi sản xuất các nhiều 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” 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 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 làm sao, bạn phải cẩn thận ngôi trường hòa hợp của bản thân mình.

Xem thêm: Tiểu Sự Của Hồ Bích Trâm - Diễn Viên Nữ Hồ Bích Trâm

Abstract Factory hay đượ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 đến Facade để bít giấu hầu hết lớp được sệt tả riêng rẽ mang đến từng “nền tảng”.

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

Đôi khi, bài toán xây dựng hệ thống sẽ đi từ Factory Method (dễ dàng 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) trường hợp nlỗi người 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ỏng đang nhắc đến ở trên, các creational pattern rất có thể thay thế lẫn nhau hoặc kết hợp với nhau tuỳ hoàn cảnh, cùng Việc kiến tạo có thể đi từ bỏ Factory Method đến Abstract Factory. Tức là các bạn phải để mắt tới thật kỹ càng bài xích toán của mình để hiểu nên gạn lọc giải pháp như thế nào, cụ vì chưng cuống quýt chắt lọc.

Các pattern được giới thiệu cụ thể là mang đến dòng lợi to cho những xây dựng viên nhưng lại các bạn không nên chịu ảnh hưởng vào bọn chúng. Theo tôi, chớ khi nào cần đưa định rằng: “Chắc sau này hệ thống vẫn buộc phải vậy này, ráng kia” hay “Có lẽ trong tương lai hệ thống rất cần được mềm mỏng hơn, flexible hơn cần yêu cầu lựa chọn Abstract Factory”. Code ít hơn lúc nào cũng xuất sắc hơn.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *