Factory Parttern trong C#

Factory Parttern trong C#
access_time 10/29/2015 1:35:28 AM
person Nguyễn Mạnh Hùng
1. Giới thiệu Factory Parttern

Factory Parttern  là thiết kế mẫu hướng đối tượng trong việc thiết kế phần mềm , Nó trực thuộc nhóm thiết kế có chức năng tạo đối tượng (Creational Parttern). Mẫu này nhằm giải quyết vấn đề tạo một đối tượng mà không cần thiết chỉ ra một cách chính xác lớp nào sẽ được tạo. Quá trình tạo đối tượng phụ thuộc vào việc cung cấp dữ liệu đầu để thực hiện quá trình tạo đối tượng.
Factory method giải quyết vấn đề này bằng cách định nghĩa một phương thức cho việc tạo đối tượng, và các lớp con thừa kế có thể override để chỉ rõ đối tượng nào sẽ được tạo. Nói chung, "factory method" thường được áp dụng cho những phương thức mà nhiệm vụ chính của nó là tạo ra đối tượng.

2. Mô tả mẫu thiết kê Factory

Để hiểu được cơ chế làm việc của mẫu thiết kế Factory chúng ta sẽ phân tích và làm rõ hình dưới đây :
Hình số 1 : Mô tả mẫu thiết kế Factory
Trong hình trên X là lớp cơ sở, XY XZ là lớp dẫn xuất của lớp X, lớp XFactory là lớp sẽ quyết định xem lớp dẫn xuất XY hay XZ là kết quả trả về của phương thức getClass, kết quả này phụ thuộc vào tham số truyền vào phương thức của phương thức getClass.

3. Ví dụ minh họa

Viết một chương trình bằng C# cho phép người sử dụng nhập thông tin về tên và họ với định dạng “Tên, họ” hoặc “Tên họ” ví dụ “Nam Nguyễn Văn” hoặc “Nam, Nguyễn Văn”. Sau đó chúng ta tách Họ và tên riêng rẽ dựa trên Họ và tên mà người sử dụng nhập vào. Yêu cầu là phải sử dụng hướng đối tượng và áp dụng cơ chế kế thừa (Lớp Tên, lớp họ … phải được tách riêng).
Bước 1 : Tạo lớp cơ sở Namer như sau :

Bước 2 : Tạo 2 lớp FirstFirst và LastFirst   tương ứng với 2 format dụ “Nam Nguyễn Văn” hoặc “Nam, Nguyễn Văn”.
Lớp FirstFirst

Mục tiêu của lớp này là xử lý vấn đề của định dạng “Nam Nguyễn Văn”, trong đó giả định trước dấu “ “ đầu tiên đó là Tên. Sau dấu cách đó là Họ và tên đệm.
Lóp LastFirst
Lớp này xử lý các vấn đề định dạng theo dấu phảy ví dụn “Nam, Nguyễn Văn”, trước dấu phải là tên, sau dấu phảy là Họ và tên đệm.
Cài đặt lớp này như sau :

Bước 3 Tạo lớp Factory và cách sử dụng lớp Factory
Lớp NameFactory

 Lớp này trả về đối tượng thể hiện của lớp FirstFirst hay LastFirst thông qua phương thức getName với tham số truyền vào là tên (áp dụng cho cả 2 định dạng), giá trị này phụ thuộc vào cách kiểm tra dấu “,” trong chuỗi họ tên. Nếu vị trí dấu “,” > 0 có nghĩa là chuỗi họ tên thuộc định dạng số 2 (Ví dụ “Nam, Nguyễn Văn”), ngược lại chuỗi họ tên sẽ trực thuộc định dạng số 1 (Ví dụ “Nam Nguyễn Văn”).
Cài đặt lớp này như sau :

Minh họa sử dụng Factory trong hàm Main() của chương trình C#

Lược đồ class sẽ mô tả chi tiết của Parttern này như sau :
Hình số 2 : Ví dụ minh họa mẫu thiết kế Factory
vertical_align_top
share
Chat...