Factory Method

Khái niệm:

factory

Định nghĩa một interface cho việc tạo ra một đối tượng, nhưng để cho các lớp con quyết định lớp nào sẽ tạo đối tượng. Factory Method cho phép một lớp hoãn việc tạo đối tượng sang các lớp con.

 

Mức độ sử dụng: cao.

 

UML Class Diagram:

factory_method_class_diagram

Những lớp và/hoặc đối tượng trong mẫu thiết kế này:

Product (Page): định nghĩa interface của các đối tượng mà factory method tạo ra.

ConcreteProduct (SkillsPage, EducationPage, ExperincePage): thực thi Product interface.

Creator (Document):

+ xác định factory method trả về đối tượng kiểu Product. Creator cũng có thể định nghĩa một sự thực thi mặc định của factory method trả về một đối tượng ConcreteProduct mặc định.

+ có thể gọi factory method để tạo ra một đối tượng Product.

ConcreteCreator (Report, Resume): override factory method để trả về một đối tượng của một ConcreteProduct.

Factory Method: Khi nào sử dụng và sử dụng ở đâu

Factory Method cho phép client sử dụng một interface cho việc tạo ra một đối tượng trong khi vẫn duy trì kiểm soát. Mục tiêu chính của fatory Method là khả năng mở rộng. Factory Method thường được sử dụng trong các ứng dụng để quản lý, bảo trì và tính toán những tập hợp các đối tượng khác nhau nhưng có những thuộc tính tương tự nhau trong cùng một thời điểm. Chẳng hạn, một hệ quản trị tài liệu có khả năng mở rộng hơn nếu bạn tham chiếu các tài liệu của bạn như một tập hợp các IDocument. Những tài liệu này có thể là các tập tin Text, các tài liệu Word, các lược đồ Visio… Nhưng chúng lại có một tác giả, một tựa đề, một kiểu, một kích cỡ, một nơi lưu trữ… Khi một loại tài liệu mới đưa ra, đơn giản nó thực thi IDocument interface và nó sẽ phù hợp với phần còn lại của các tài liệu. Để hỗ trợ loại tài liệu mới này, Factory Method có thể phải hoặc không phải điều chỉnh lại (phù thuộc vào cách nó được thực thi, và có hoặc không có tham số). Ví dụ sau cần phải được điều chỉnh:

factory_method_ex_1

Factory Method thường được sử dụng trong những thành phần “quản lý”, chẳng hạn như document manager, account manager, permission manager…

Trong những chương trình của bạn, bạn hầu như tạo ra các phương thức trả về các đối tượng mới. Tuy nhiên, không phải tất cả các phương thức trả về đối tượng mới là Factory Method. Vậy khi nào bạn biết được Fatory Method hoạt động? Quy tắc là:

– phương thức tạo ra đối tượng mới

– phương thức trả về một lớp trừu tượng hoặc interface

– lớp trừu tượng hoặc interface được thực thi bởi một số lớp

Demo:

FactoryMethodRealWorldClassDiagram

http://cid-d0e5ddf023bf4324.office.live.com/embedicon.aspx/.Public/Design%20Pattern/FactoryMethodRealWorld.zip

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s