Tại sao mô hình tiêm phụ thuộc không được đưa vào nhóm bốn người ? GOF đã thử nghiệm tự động rộng rãi trước ngày? Là tiêm phụ thuộc bây giờ được coi là một mô hình cốt lõi?
Tại sao mô hình tiêm phụ thuộc không được đưa vào nhóm bốn người ? GOF đã thử nghiệm tự động rộng rãi trước ngày? Là tiêm phụ thuộc bây giờ được coi là một mô hình cốt lõi?
Câu trả lời:
Tôi là biên tập viên của tạp chí Phát triển phần mềm khi cuốn sách Gang of Four ra mắt và tôi có thể nói với sự tự tin hoàn toàn rằng kiểm thử đơn vị không phải là một thực tiễn phổ biến vào năm 1994, khi Mẫu thiết kế ban đầu được xuất bản.
Vào năm 1994, C ++ là ngôn ngữ hướng đối tượng được sử dụng phổ biến nhất và hầu hết mọi người lập trình nó đều đến từ nền C. Một trong những điều "suy nghĩ trong đồ vật" mà mọi người đơn giản không có là ý tưởng về hàng trăm hoặc hàng ngàn điểm vào chương trình của bạn. Bạn nghĩ về main()
. Nếu bạn đã làm việc trong một dự án lớn, bạn có thể có một tệp thực hiện (thường khá phức tạp) để tạo một chương trình dựa trên mô-đun. Nhưng "kiểm thử đơn vị"? Bắt đầu một quá trình, xây dựng bối cảnh bộ nhớ cần thiết, thực hiện nó và xé nó ra, trên cơ sở mỗi phương pháp ? Điều đó rất triệt để.
Java làm cho lập trình nhiều điểm nhập rõ ràng hơn. Vào thời điểm bùng nổ Dot-Com ban đầu, thử nghiệm đơn vị là một kỹ thuật nổi tiếng, nhưng nó thực sự là JUnit (khoảng năm 2001?) Khiến nó bắt lửa và trở thành một thông lệ.
Mặc dù Chiến lược và khái niệm chung về lập trình cho giao diện là một phần của GoF và chủ nghĩa tư tưởng giữa thập niên 90, ý tưởng tiêm chích đã đến khá muộn cho bữa tiệc (khoảng '03 -'05?). Thành thật mà nói, những sợi tóc màu xám của tôi vẫn còn khá mơ hồ về khía cạnh đó của DI ("Hãy rời khỏi bãi cỏ của tôi đi, các tập tin cấu hình chết tiệt!").
Họ gọi đó là Chiến lược .
Chiến lược của họ dường như có tất cả các tính năng của tiêm phụ thuộc mà không có tên nghe có vẻ phức tạp.
Tôi nghĩ Dependency Injection có liên quan hơn khi tách việc thực hiện theo các bậc. Một lĩnh vực khác mà chúng tôi nghĩ về tiêm phụ thuộc là thử nghiệm đơn vị. Và đề nghị trước ngày của bạn dường như là chính xác. Nếu các băng đảng thu thập và tách biệt các mô hình vào năm 2012, chắc chắn tiêm phụ thuộc sẽ ở đó.
Chiến lược có thể được đưa ra trong các cuộc thảo luận nhưng Chiến lược không nói về tiêm phụ thuộc. Nhưng khi sử dụng mẫu chiến lược trong một dự án hoặc dll (tất cả các lớp và giao diện vẫn còn trong một dự án), có vẻ như chúng ta đang thực hiện tiêm phụ thuộc. Trong thực tế, chúng tôi không.
Bây giờ, nếu các lớp và giao diện được đề cập trong mẫu chiến lược được phân tách trong các dự án hoặc tầng khác nhau thì WE sẽ phải sử dụng các kỹ thuật tiêm phụ thuộc. Chúng tôi có thể sử dụng các tệp cấu hình thống nhất (mặc dù không thể thay đổi thời gian chạy). Nhưng mô hình Chiến lược không nói làm thế nào để tiêm một phụ thuộc.
Nếu có một mẫu tương tự gần với phép tiêm Dependency thì đó là mẫu Phương thức nhà máy trừu tượng. Mẫu này có thể được sử dụng trong mẫu chiến lược để tăng sự phụ thuộc.
Chiến lược trả lời đúng 100%. Tôi đã bình chọn nó nhưng có thể bình luận.
"Chiến lược cho phép thuật toán thay đổi độc lập với các khách hàng sử dụng nó. [1] Chiến lược là một trong những mẫu được bao gồm trong cuốn sách Các mẫu thiết kế có ảnh hưởng của Gamma và cộng sự đã phổ biến khái niệm sử dụng các mẫu để mô tả thiết kế phần mềm."
Một mẫu thiết kế không phụ thuộc vào việc sử dụng nó. Dependency Injection được thực hiện bằng cách sử dụng mẫu Chiến lược. Nếu chúng ta đặt tên cho mỗi mẫu dựa trên trường hợp sử dụng, chúng ta sẽ phải đổi tên rất nhiều mẫu.
Mẫu kho lưu trữ không phải là một mẫu mới, nó là Mẫu Mẫu.
"Trong phương thức mẫu của mẫu thiết kế này, một hoặc nhiều bước thuật toán có thể được ghi đè bởi các lớp con để cho phép các hành vi khác nhau trong khi vẫn đảm bảo rằng thuật toán bao trùm vẫn được tuân theo."
Thông thường các mẫu là nhiều mẫu được kết hợp và đặt tên như mẫu MVC.
GOF không có giao diện cho các lớp Pure Trừu tượng đã sử dụng và cũng tận dụng khả năng kế thừa của C ++ từ nhiều hơn một lớp.