Mô hình nhà máy trong C++

Mo Hinh Nha May Trong C



Factory Pattern là một cách tạo các đối tượng trong quá trình phát triển phần mềm mà không cần biết các chi tiết cụ thể về cách chúng được tạo. Nó cung cấp một giao diện đơn giản hóa để tạo các đối tượng bằng cách ẩn logic tạo phức tạp đằng sau một lớp xuất xưởng. Nó thuộc danh mục các mẫu thiết kế giải quyết các cơ chế tạo đối tượng. Bài viết này đề cập đến các mẫu xuất xưởng trong C++.

Giới thiệu về Factory Pattern

Một mẫu thiết kế là một phương pháp giải quyết các vấn đề định kỳ trong thiết kế phần mềm. Factory Pattern là một trong những mẫu thiết kế giúp tạo ra các đối tượng một cách linh hoạt và tách rời.

Factory Pattern là một mẫu thiết kế sáng tạo trong C++ cho phép tạo đối tượng mà không cần biết rõ lớp của đối tượng. Nó cung cấp một cách để đóng gói logic tạo đối tượng phức tạp trong một lớp nhà máy riêng biệt. Điều này được thực hiện bằng cách xác định một giao diện chung để tạo các đối tượng, trong đó lớp cụ thể của đối tượng được xác định trong thời gian chạy.







Thay vì tạo một đối tượng trực tiếp, chúng tôi sử dụng phương thức xuất xưởng để cung cấp cho chúng tôi một thể hiện của đối tượng mà chúng tôi muốn. Bằng cách này, chúng ta có thể ẩn các bước phức tạp liên quan đến việc tạo đối tượng và làm cho việc thay đổi hoặc sửa đổi đối tượng trong tương lai trở nên đơn giản hơn.



Tại sao lại sử dụng Factory Pattern?

Có một số lý do tại sao chúng ta có thể muốn sử dụng mẫu xuất xưởng. Một lý do là nó cho phép tách mã khỏi các lớp cụ thể. Bằng cách sử dụng một phương thức xuất xưởng, chúng ta có thể dễ dàng chuyển lớp này sang lớp khác mà không phải thay đổi bất kỳ mã nào khác và làm cho nó hiệu quả hơn.



Một lý do khác để sử dụng mẫu xuất xưởng là nó có thể làm cho mã dễ kiểm tra hơn. Các mẫu xuất xưởng cho phép chúng tôi kiểm tra mã bằng cách tạo các đối tượng giả.





Dưới đây là một số lý do tại sao mẫu xuất xưởng được sử dụng trong C++:

  • Mẫu Factory Method được sử dụng khi một lớp không biết trước những đối tượng mà nó cần tạo.
  • Mẫu được sử dụng khi một lớp dựa vào các lớp con của nó để chỉ định các đối tượng mà nó tạo ra.
  • Nó rất hữu ích khi bạn muốn đóng gói logic để tạo một đối tượng phức tạp ở một nơi.

Ví dụ về Factory Pattern trong C++

Trong C++, chúng ta có thể triển khai mẫu xuất xưởng bằng cách định nghĩa một lớp cơ sở trừu tượng với phương thức xuất xưởng ảo. Phương thức này sẽ trả về một con trỏ tới thể hiện của lớp mong muốn. Sau đó, chúng ta có thể dẫn xuất các lớp cụ thể từ lớp cơ sở này và ghi đè phương thức xuất xưởng để trả về một thể hiện của lớp thích hợp.



Đây là một ví dụ về cách chúng ta có thể sử dụng triển khai mẫu xuất xưởng này:

#include

sử dụng không gian tên std ;

lớp học {

công cộng :

ảo khoảng trống vẽ tranh ( ) = 0 ;

tĩnh Hình dạng * tạo hình ( int kiểu ) ;

} ;

vòng tròn lớp học : hình dạng công cộng {

công cộng :

khoảng trống vẽ tranh ( ) {

cout << 'Vẽ một vòng tròn.' << kết thúc ;

}

} ;

lớp chữ nhật : hình dạng công cộng {

công cộng :

khoảng trống vẽ tranh ( ) {

cout << 'Vẽ hình chữ nhật.' << kết thúc ;

}

} ;

Hình dạng * Hình dạng :: tạo hình ( int kiểu ) {

nếu như ( kiểu == 1 ) {
trở lại vòng kết nối mới ( ) ;
} khác nếu như ( kiểu == 2 ) {
trở lại hình chữ nhật mới ( ) ;
} khác {
trở lại nullptr ;
}
}


int chủ yếu ( ) {

Hình dạng * vòng tròn = Hình dạng :: tạo hình ( 1 ) ;

vòng tròn -> vẽ tranh ( ) ;

Hình dạng * hình chữ nhật = Hình dạng :: tạo hình ( 2 ) ;

hình chữ nhật -> vẽ tranh ( ) ;

trở lại 0 ;

}

Trong ví dụ này, chúng ta có một lớp Shape với hai lớp dẫn xuất: Circle và Rectangle. Lớp Shape có một hàm ảo thuần túy draw(), được triển khai bởi các lớp dẫn xuất. Lớp Shape cũng có một hàm tĩnh createShape(int type), hoạt động như một phương thức xuất xưởng để tạo các thể hiện của các lớp dẫn xuất dựa trên kiểu đã chỉ định. Hàm draw() được gọi trên các đối tượng đã tạo để thể hiện hành vi cụ thể của chúng.

  Ảnh có chứa văn bản, phông chữ, ảnh chụp màn hình Mô tả được tạo tự động

Phần kết luận

Factory Pattern là một mẫu thiết kế sáng tạo trong C++ cho phép tạo đối tượng mà không cần biết rõ lớp của đối tượng. Nó cung cấp một giao diện đơn giản hóa để tạo các đối tượng bằng cách ẩn logic tạo phức tạp đằng sau một lớp xuất xưởng. Điều này được thực hiện bằng cách xác định một giao diện chung để tạo các đối tượng, trong đó lớp cụ thể của đối tượng được xác định trong thời gian chạy. Đọc thêm về các mẫu nhà máy trong bài viết này.