Tuesday, December 8, 2015

[Creational Pattern] Abstract factory pattern trong Objective C

Tiếp theo bài Singleton pattern. Bài này mình xin giới thiệu Abstract factory pattern trong nhóm Creational Pattern.

Khái niệm: Abstract factory pattern cung cấp một interface để tạo những mối quan hệ gia đình giữa những đối tượng liên quan hoặc phụ thuộc, không quy định chi tiết các lớp cụ thể của chúng.

Cấu trúc lớp: Hiện tại theo mình thấy thì có 2 cách để thể hiện Abstract factory như dùng interface hay dùng abstract class. Tuỳ theo cách dùng sẽ có cách vẽ sơ đồ lớp khác nhau.
- Trường hợp dùng Interface làm abstract factory sẽ có sơ đồ như sau:


- Trường hợp dùng Abstract Class làm abstract factory sẽ có sơ đồ như sau:

Cách sử dụng: Lớp client chỉ cần quan tâm đến những abstract factory mà không cần quan tâm đến những lớp cụ thể như productA1, productA2, productB1, productB2. Sơ đồ như sau:


Code ví dụ trong Objective C: Ví dụ mình dùng interface để thể hiện pattern này.
- Sơ đồ ví dụ như bên dưới:
Source from Wikipedia

- Code về những factory, cách viết interface trong objective C sử dụng protocol như sau:

- Code về những product như sau:

- Client gọi factory như sau:

- Unit test cho pattern này:

Tài liệu tham khảo:

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.