Hỏi về Strategy pattern

mình vừa đọc xong về Strategy pattern này , không biết mình hiểu thế này có đúng không , đó là nếu khi xây dựng 1 đối tượng mà ta thấy các hành vi của đối tượng này luôn thay đổi thì ta nên tạo 1 inteface để xử lý hành vi này thay vì định nghĩa ngay trong class , vd: con vịt có hành vi kêu và hành vi này sẽ thay đổi tùy vào mỗi loại vịt khác nhau >>> nên ta sẽ tạo 1 inteface kêu để xử lý hành vi này…

vậy cho mình hỏi ta có thể lạm dụng inteface bằng cách cứ có hành vi nào là ta tạo inteface rồi định nghĩa chi tiết hành vi đó ở các class implement , vì nhiều khi ta không biết trước được hành vi nào sẽ thay đổi trong tương lai ??

à cho mình hỏi 1 cái nữa vậy có phải việc cho các đối tượng tương tác với nhau thông qua inteface là 1 cách tốt nhất không vì mình thấy nó làm cho các đối tượng không quá phụ thuộc vào nhau mà chỉ phụ thuộc vào cái inteface , vậy cứ mỗi lớp lại phải viết 1 inteface liệu có đúng ko ???

Bạn xem lại nguyên lý DIP trong SOLID.

Dependency inversion principle (DIP)
A. High-level modules should not depend on low-level modules. Both should depend on abstractions.
B. Abstractions should not depend on details. Details should depend on abstractions.

1 Like

vậy còn có nên lạm dụng inteface để viết class không cứ có hành vi nào là cho vào inteface hết rồi định nghĩa nó riêng ??

còn về ý B của cái dependency inversion là sao vậy bạn có thể giải thích được không ?? trừu tượng không phụ thuộc vào chi tiết là sao??

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?