Table of Contents
Giới thiệu về các gương mẫu được tạo ra
Các mẫu thiết kế tạo vật trừu tượng quá trình giải quyết các vấn đề khác nhau, làm cho hệ thống độc lập về cách các đối tượng được tạo ra, cấu tạo và đại diện. Trong số các mẫu GoF, Aleton và erton là hai trong số các mẫu thường gặp nhất, nhưng chúng giải quyết các vấn đề khác nhau cơ bản. Singriable điều khiển số trường hợp, trong khi Hệ thống kỹ thuật xếp hạng bê tông để chọn các loại cụ thể để lập tức. Một trong hai mẫu đặc biệt là mô hình dẫn đến sự phức tạp cứng nhắc hoặc không cần thiết. Bài này kiểm tra mỗi mô hình trong chiều sâu, làm rõ ngữ cảnh thích hợp, và cung cấp hướng dẫn hoạt động giữa các kỹ sư.
Mẫu đơn
Mô hình Singleton giới hạn một lớp học trong một trường hợp duy nhất và cung cấp một điểm toàn cầu để truy cập vào ví dụ đó. nó là một trong những mẫu đơn giản nhất nhưng cũng là một trong những tranh cãi nhất do tác động của nó lên khả năng kiểm tra và kết nối.
Ký tự chính
- Bảo đảm: ) Các công trình xây dựng tư nhân ngăn chặn sự lập phương bên ngoài. Một phương pháp tĩnh (thường [FLT: 0] trả lại thể hiện duy nhất.
- Truy cập vô tuyến:) tiến trình này có thể truy cập từ bất cứ nơi nào trong ứng dụng này, thường qua một biến hay phương pháp hay biến số công cộng.
- Sự khởi đầu chậm chạp hay háo hức:) Trường hợp này có thể được tạo ra vào lúc tải giờ (trước) hoặc hoãn lại cho đến yêu cầu đầu tiên (lzy).
Khi độc thân được phân chia
- Nguồn tài nguyên phải được phối hợp: bộ quản lý cấu hình, hồ sơ mạch, hồ sơ kết nối, dịch vụ ghi lưu, và trình điều khiển giao diện phần cứng thường yêu cầu một bộ điều khiển chính xác.
- Nhà nướcGlobal không nên bị nhân bản: Bộ quản lý bộ nhớ tạm, hệ thống tập tin trừu tượng hoá lớp, hoặc bộ quản lý cửa sổ trong khuôn khổ GUI.
- Các đối tượng tăng cường mã nguồn: các đối tượng đắt tiền để tạo ra và sử dụng lại hệ thống có lợi ích từ một ví dụ.
Suy xét
Sự an toàn theo dạng đa chiều là cạm bẫy phổ biến nhất. Một việc thực hiện ngây thơ kiểm tra [FLT: 1], và tạo ra thể hiện có thể tạo nhiều trường hợp trong môi trường đa chỗ. Giải pháp bao gồm việc khóa kép với ), trạng thái tĩnh trong nội bộ (Bill Pughton), hoặc một bộ khung ở Java. Trong Python, việc khởi tạo an toàn bằng [FL: 3) là tiêu chuẩn. Sự lựa chọn giữa sự háo hức và sự khởi tạo phụ thuộc vàoton được đảm bảo là một và nặng.
Chỉ trích và cạm bẫy
Đơn vị được xem là đối nghịch với tình trạng toàn cầu, vì nó đưa ra trạng thái toàn cầu, làm cho việc thử nghiệm đơn vị khó khăn- thử nghiệm trở thành phụ thuộc vào thứ tự và khó cô lập. Chúng cũng ẩn phụ thuộc; một lớp gọi trực tiếp là những người trực tiếp kết hợp với hạng bê tông của đơn. Thực hành hiện thời khuyên dùng việc tiêm phụ thuộc để cung cấp một bộ khung đơn như một ví dụ chung, cho phép sử dụng các quan hệ thống được thử nghiệm (v. d. các đơn trong hệ thống phân phối (v. các dịch vụ vi dịch vụ) là vô nghĩa trừ khi tiến trình xử lý trên mỗi nút một trong một hệ thống khác nhau.
Name
Phương pháp nhà máy định nghĩa một giao diện để tạo ra một đối tượng nhưng cho phép các lớp con quyết định lớp nào để lập tức. nó chuyển trách nhiệm của việc tạo vật thể từ khách hàng sang phương pháp nhà máy, thúc đẩy nguyên tắc mở/ khép kín.
Ký tự chính
- Lập luận sáng tạo được mô tả: Mã trình khách không biết hạng cụ thể; nó hoạt động thông qua kiểu sản phẩm trừu tượng.
- [FLT: 0] Khả năng: có thể thêm vào các loại sản phẩm mới bằng cách tạo ra các nhà máy bê tông mới mà không sửa đổi mã ứng dụng khách đã có.
- Thực hiện nghịch cảnh: [FLT: 1] Lớp chính xác để lập tức được xác định vào lúc chạy, dựa trên dữ liệu nhập, cấu hình hoặc ngữ cảnh.
Khi phương pháp nhà máy thích hợp
- Khi hệ thống cần làm việc với nhiều biến thể sản phẩm có giao diện chung - v. g., các trình điều khiển cơ sở dữ liệu khác nhau, định dạng xuất tài liệu, hoặc chủ đề UI.
- Mã trình khách từ thực hiện bê tông: ) Ứng dụng khách gọi phương pháp nhà máy và nhận đối tượng phù hợp với giao diện trừu tượng. Thay đổi sang hạng bê tông không ảnh hưởng đến ứng dụng khách.
- Tạo ra sự tự động: ứng dụng có thể quyết định khi khởi chạy nhà máy bê tông nào cần dùng dựa trên tập tin cấu hình, biến môi trường, hoặc điều kiện thời gian chạy.
Suy xét
Một phương pháp kỹ thuật kỹ thuật điển hình dùng một lớp trừu tượng để tuyên bố phương pháp máy móc (thường dùng trừu tượng). Một nhà tạo ra nhà máy có khả năng thay thế phương pháp này để phân loại các sản phẩm. Trong ngôn ngữ không có di sản (v. g., JavaScript), nhà máy có thể là một chức năng hoặc đóng. Mẫu hoạt động tốt với các hộp phụ thuộc có thể thay thế. Một biến thể thông thường là phương pháp [FT: 0] phương pháp [FL: 0] [FL: 1] [FL: 1] (v. d. [FL: 6] trong Java], nhưng không phải cùng kiểu mẫu của phương pháp này.
Ví dụ thực tế: Bộ chuyển đổi tài liệu
Hãy xem xét một ứng dụng chuyển đổi tài liệu giữa các định dạng. Một giao diện trừu tượng [FLT: 7) định nghĩa một [FLT:] phương pháp nhập vào. Phương pháp nhà máy trả về một , , hoặc dựa trên phần mở rộng. Phương pháp này [v.
So sánh trực tiếp: Singleton va các phương pháp nhà máy
Mặc dù cả hai đều là mẫu hình sáng tạo, mục tiêu và đánh đổi của họ gần như là đối xứng.
| Aspect | Singleton | Factory Method |
|---|---|---|
| Primary goal | Ensure a single instance | Encapsulate object creation |
| Instance count | Exactly one | Many instances, but created through a factory |
| Control over class selection | Not relevant (always same class) | Subclasses or runtime logic choose the concrete class |
| Impact on maintainability | Can increase coupling (global access) | Reduces coupling (client depends on abstraction) |
| Testability | Often problematic (global state) | Good, as factories can be mocked |
| Extensibility | Limited (hard to subclass a singleton) | High (new products via new factories) |
Chọn Singleton khi bạn quan tâm quá mức ví dụ đặc biệt và phối hợp toàn cầu ví dụ, một dịch vụ ghi nhật ký phải in ra một tập tin riêng lẻ. Chọn phương pháp Xây dựng khi bạn tập trung vào việc phân tách đối tượng từ mã khách hàng và cho phép hệ thống phát triển với các biến thể sản phẩm mới. Ví dụ, một công cụ GUI cần phải tạo nút bản địa trên hệ điều hành khác nhau.
Khi họ quá chú trọng (và khi nào không dùng)
Cách tiếp cận này kết hợp cả hai mẫu nhưng thừa hưởng các vòng lặp của trạng thái toàn cầu. Một cách tốt hơn là tiêm vào phụ thuộc nhà máy và giữ cho nhà máy là hạng bình thường. Còn nếu mục tiêu là chia sẻ một ví dụ nhà máy qua ứng dụng, một công cụ phụ thuộc có thể quản lý việc sử dụng xe đạp để tạo ra một mẫu đơn trên nhà máy.
Những sự suy xét thực tế cho các ứng dụng hiện đại
Thử thách và thử thách tính phụ thuộc
Cả hai mẫu tương tác với nhau bằng cách thử nghiệm khác nhau: Các lò mổ có tiếng là khó thay thế bằng các thử nghiệm đơn vị. Một cách làm việc thông thường là giới thiệu một giao diện cho con một và cung cấp hai mẫu thử, nhưng làm suy yếu sự đơn giản của mô hình. Các phương pháp nhà máy, mặt khác, được thay thế bằng cách dễ dàng thay thế bằng cách tạo một nhà máy giả tạo trong các cuộc thử nghiệm.
Hệ thống nhất định và phân phối
Một người có thể chia sẻ tài nguyên qua các dịch vụ vi mô, sử dụng cơ sở dữ liệu, các bộ nhớ tạm như Redis, hoặc cuộc bầu cử trưởng — chứ không phải mẫu đơn.
Kết hợp các mẫu cho giải pháp thật sự trên thế giới
Nhiều hệ thống sản xuất kết hợp những mẫu này một cách thông minh. Ví dụ, một [FLT: 0] Hồ bơi kết nối [FLT: 1] [FLT:] có thể dùng phương pháp nhà máy để tạo ra các kiểu kết nối khác nhau (v. d., đọc- chỉ vs. read- ghi). Một công ty có khả năng đảm bảo một hồ bơi cho mỗi ứng dụng, trong khi phương pháp quản lý các đối tượng kết nối. Một thí dụ khác: một bộ tạo [FL2] bộ tạo năng lượng [FL] bộ tạo [FL] bộ tạo [FL] bộ tạo [FL] bộ tạo ra các đại biểu cho một phương pháp tạo ra các nhà máy.
Những lỗi thường gặp nên tránh
- Khi một nhà máy đủ khả năng: ) Nếu bạn chỉ muốn một tiến trình đơn của một lớp vì lý do hiệu suất, tiêm thuốc bổ phụ thuộc với một phạm vi mộtton đơn sạch hơn một người truy cập toàn cầu.
- Phương pháp Xây dựng khi tạo vật không đáng kể và cố định: ) Nếu kiểu đối tượng không bao giờ thay đổi và không có lớp con, một nhà xây dựng đơn giản sẽ dễ hiểu hơn.
- sự kết nối chặt chẽ giữa nhà máy và các gia đình sản phẩm: ) tránh đặt cấu hình hoặc lý luận kinh doanh vào phương pháp nhà máy nên được đặt ở nơi khác.
- Để đảm bảo an toàn sợi trong các đơn: trong môi trường máy phục vụ, một đơn không an toàn có thể tạo trạng thái bị hỏng dưới tải.
Kết luận
Phương pháp đơn và nhà máy phục vụ cơ bản các vai trò khác nhau trong thiết kế phần mềm. Singleton thực hiện một thí dụ cho sự phối hợp toàn cầu; Tính toán kỹ thuật trừu tượng hóa vật thể tạo vật để hỗ trợ tính biến đổi thời gian và tính khả năng mở rộng. Việc chọn giữa chúng đòi hỏi sự quan tâm chính yếu của bạn là đặc trưng hay tính linh hoạt. Không có mẫu bạc — hoặc mẫu bạc — hoặc giới thiệu các sự trao đổi trong thử nghiệm, kết hợp, kết hợp và sự phức tạp. Theo sự hiểu biết về sức mạnh và giới hạn của chúng, các kỹ sư có thể áp dụng chúng một cách cố tình, trong việc tiêm và khung cảnh hiện đại, để xây dựng hệ thống có khả năng và duy trì hệ thống.
Để đọc thêm, xin xem các mẫu hình kinh điển GoFF trên . Guru ) và ) Phương pháp . [FLT:] Cũng xem phân tích [FLT:] [FLT:] [FLTT:].], và trang web [FT] Phương pháp [FL: T] [FL] để thực hiện các ứng dụng ngôn ngữ.