Design Pattern: Abstract Factory
Chào mừng các bạn đến với chủ đề Design Pattern
Và hôm nay chúng ta sẽ tìm hiểu về pattern đầu tiền trong nhóm creational pattern:
Abstract Factory Pattern.
1. Tính chất cơ bản abstract Factory.
+ Không cần biết cụ thể đến các lớp product A1, A2, B1, B2 mà vẫn tạo ra được chúng thông qua Abstract Factory
+ Điều đó có nghĩa là chỉ cần sử dụng một đối tượng mà tạo lên được nhiều đối khác chỉ cần chúng có quan hệ với nhau.
Ví dụ cho thực tế:
Một shop bán đồ điện tử, khi đến nhà máy để lấy sản phẩm. Giả sử họ kinh doanh nhiều sản phẩm của nhiều hãng khác nhau.
Khi đến nhà máy của hãng họ không bao giờ mua lẻ rời rạc từng chiếc iphone, tablet, ipad, ở từng bộ phận cung cấp.
Họ sẽ mua theo gói sản phẩm, ví dụ họ muốn mua gói sản phẩm đầy đủ của Samsung.
Thì nhà máy samsung phải tự tập hợp một gói sản phẩm đầy đủ các loại như : phone, tablet, screen để bán cho họ.
Như vậy shop biết gói sản phẩm có phone, có tablet, có screen.
Nhưng không quan tâm việc mua nó ở đâu trong từng khu vực của nhà máy. Đó là việc của nhà máy.
2. Sơ đồ UML abstract Factory.
3. Áp dụng vào một ví dụ thực tế.
3. Code C++ minh họa cho abstract factory
a. Shop bán 2 loại sản phẩm đó là Phone và table.
+ Phone thì họ lựa chọn 2 hãng là galaxy, apple.
+ Tablet thì cũng có 2 hãng là Samsung Tab và Ipad
b. Cửa hàng sẽ lấy sản phẩm từ các nhà máy sản xuất.
Nhà máy sản xuất làm nhiệm vụ tạo các gói sản phẩm gồm Phone và Tablet.
Nhà máy sản xuất sẽ lấy từ hai nguồn là nhà máy của sam sung và nhà máy của apple
c. Cuối cùng tại hàm main. Chỉ cần new đối tượng hai nhà máy.
Thì lập tức 4 loại sản phẩm điện tử trên sẽ được khởi tạo.
Như vậy với mẫu design này, bạn cứ nhớ đến 1 cửa hàng bán 2 loại sản phẩm của hai hãng cung cấp khác nhau, bạn sẽ biết cách dùng nó.
Ok. Đó là Abstract Factory Design Pattern.