4.1 Trình tạo
Builder là một mẫu thiết kế chung cung cấp một cách để tạo một đối tượng tổng hợp.
Tách việc xây dựng một đối tượng phức tạp khỏi biểu diễn của nó để quá trình xây dựng giống nhau có thể dẫn đến các biểu diễn khác nhau.
Điểm mạnh:
- cho phép bạn thay đổi hình ảnh bên trong của sản phẩm;
- cô lập mã thực hiện xây dựng và trình bày;
- cho phép kiểm soát tốt hơn quá trình thiết kế.
Mặt yếu:
- thuật toán tạo một đối tượng phức tạp không nên phụ thuộc vào đối tượng bao gồm những bộ phận nào và chúng khớp với nhau như thế nào;
- quá trình xây dựng phải cung cấp các biểu diễn khác nhau của đối tượng đang được xây dựng.
Một ví dụ điển hình là lớp HttpRequest, lớp này có một lớp con HttpRequest.Builder có thể được sử dụng để tạo các thể hiện của lớp HttpRequest và đảm bảo chúng hợp lệ.
4.2 Khởi tạo chậm
Khởi tạo chậm là một kỹ thuật lập trình khi một số thao tác sử dụng nhiều tài nguyên (tạo đối tượng, tính toán giá trị) được thực hiện ngay trước khi kết quả của nó được sử dụng.
Do đó, việc khởi tạo được thực hiện “theo yêu cầu” chứ không phải trước. Một ý tưởng tương tự tìm thấy ứng dụng trong nhiều lĩnh vực: ví dụ: biên soạn nhanh chóng và khái niệm hậu cần Just-in-Time.
Một trường hợp đặc biệt của khởi tạo chậm - tạo một đối tượng tại thời điểm truy cập nó - là một trong những mẫu thiết kế chung. Nó thường được sử dụng cùng với các mẫu như Factory Method, Loner và Proxy.
Điểm mạnh:
- Việc khởi tạo chỉ được thực hiện khi thực sự cần thiết;
- Quá trình khởi tạo ban đầu của ứng dụng được tăng tốc: mọi thứ có thể hoãn lại đều bị hoãn lại.
Mặt yếu:
- Không thể đặt rõ ràng thứ tự khởi tạo các đối tượng;
- Có độ trễ ở lần truy cập đầu tiên vào đối tượng, điều này có thể nghiêm trọng khi một hoạt động sử dụng nhiều tài nguyên khác được thực hiện song song. Vì điều này, cần phải xem xét cẩn thận sự phù hợp của việc sử dụng khởi tạo chậm trong các hệ thống phần mềm đa luồng.
Hãy nhớ làm thế nào khi viết web.xml bạn có thể chỉ định thứ tự bắt đầu của các servlet ở đó? Đây chính xác là kết quả của việc lười tải. Tomcat sẽ tạo các đối tượng servlet khi chúng được truy cập lần đầu tiên.
4.3 Nhóm đối tượng
Nhóm đối tượng là một mẫu thiết kế gốc, một tập hợp các đối tượng đã khởi tạo và sẵn sàng sử dụng. Khi hệ thống cần một đối tượng, nó không được tạo ra mà được lấy từ nhóm. Khi một đối tượng không còn cần thiết, nó không bị hủy mà được trả về nhóm.
Nhóm đối tượng được sử dụng để cải thiện hiệu suất khi việc tạo một đối tượng khi bắt đầu công việc và hủy bỏ nó khi kết thúc là rất tốn kém. Cải thiện hiệu suất đặc biệt đáng chú ý khi các đối tượng được tạo và hủy thường xuyên, nhưng chỉ một số lượng nhỏ chúng tồn tại cùng một lúc.
Nhóm đối tượng hữu ích khi một đối tượng sở hữu các tài nguyên khác ngoài bộ nhớ, chẳng hạn như ổ cắm mạng. Hoặc nếu bộ sưu tập các đối tượng chiếm một phần đáng kể trong bộ nhớ của máy tính và rất nhiều "rác" được tạo ra.
Như bạn còn nhớ, Tomcat thực hiện từng yêu cầu trong một chuỗi riêng biệt. Nhưng các luồng không được tạo lại mỗi lần mà được lưu trữ trong nhóm luồng. Điều này cho phép thực hiện các yêu cầu nhanh hơn: khi cần một luồng, nó chỉ được lấy từ nhóm. Nhân tiện, câu hỏi là: làm thế nào bạn có thể đưa chuỗi đang chạy vào nhóm và lấy nó từ nhóm?
GO TO FULL VERSION