Đây là một quyết định thiết kế dường như xuất hiện khá nhiều: làm thế nào để vượt qua bối cảnh thông qua một phương thức không cần đến phương thức đó. Có một câu trả lời đúng hay không phụ thuộc vào bối cảnh.
Mã mẫu yêu cầu một giải pháp
// needs the dependency
function baz(session) {
session('baz');
}
// doesn't care about the dependency
function bar() {
baz();
}
// needs the dependency
function foo(session) {
session('foo')
bar();
}
// creates the dependency
function start() {
let session = new Session();
foo(session);
}
Phương pháp khả thi
- tiêu đề
- toàn cầu
- đối tượng bối cảnh
- vượt qua sự phụ thuộc thông qua
- cà ri baz và chuyển nó vào thanh với sự phụ thuộc được đặt làm đối số đầu tiên
- tiêm phụ thuộc
Ví dụ về nơi xuất hiện
Xử lý yêu cầu HTTP
Các đối tượng bối cảnh ở dạng thuộc tính yêu cầu thường được sử dụng: xem expressjs, Java Servlets hoặc .net's owin.
Ghi nhật ký
Đối với dân gian ghi nhật ký Java thường sử dụng toàn cầu / singletons. Xem các mẫu ghi nhật ký log4j / commons / java điển hình.
Giao dịch
Các chủ đề cục bộ thường được sử dụng để giữ một giao dịch hoặc phiên được liên kết với một chuỗi các lệnh gọi phương thức để tránh cần phải truyền chúng dưới dạng tham số cho tất cả các phương thức không cần chúng.