Nếu bạn thêm các tùy chọn cấu hình mới vào một chương trình, nó thường có thể có hàng tấn hiệu ứng gợn về việc đưa các tùy chọn đến nơi mà chúng cần phải được xử lý. Có ba cách cơ bản để giải quyết vấn đề này mà tôi biết:
Truyền tất cả các cài đặt cấu hình cho các phần của chương trình của bạn cần chúng rõ ràng là nguyên thủy. Đây là cách rõ ràng nhất và cách phân tách mọi thứ nhiều nhất. Nhược điểm là điều này vừa dài vừa giòn.
Thực hiện các cài đặt cấu hình được sử dụng thường xuyên nhất toàn cầu / tĩnh. Đây là cách đơn giản nhất nhưng giới thiệu hành động ở khoảng cách xa, cản trở khả năng kiểm tra và giả định rằng cấu hình thực sự là toàn cầu (rằng bạn chỉ muốn một cấu hình tại bất kỳ thời điểm nào).
Tạo một lớp / cấu hình cấu hình có chứa tất cả các tùy chọn cấu hình cho toàn bộ chương trình hoặc cho từng mối quan tâm chính trong chương trình, và sau đó chuyển nó một cách rõ ràng. Điều này ít rõ ràng hơn (1) nhưng rõ ràng hơn (2). Nếu bạn muốn thay đổi cài đặt chỉ cho một cuộc gọi chức năng, bạn có thể sao chép đối tượng cấu hình và thay đổi một giá trị này. Điều này rất hữu ích trong cả thử nghiệm và trong thực tế. Tuy nhiên, cuối cùng bạn vẫn có khả năng chuyển hàng tấn thông tin đến một chức năng mà nó không cần và thay đổi một giá trị trong lớp cấu hình / struct vẫn có thể gây ra hành động từ xa.
Bạn sẽ xem xét (3) một mẫu hoặc một mẫu chống? Nếu đó là một mô hình chống, bạn sẽ làm gì thay thế?