Tôi đang có các mẫu thử với mẫu quan sát viên. Nó nói Observer và Subject cả hai đều là giao diện. Tôi hiểu tại sao các nhà quan sát lại là các giao diện, nhưng tại sao không tốt hơn để có chủ đề một lớp trừu tượng? Có thể bạn đã thực hiện ít nhất loại bỏ/đăng ký?Mẫu quan sát trừu tượng so với giao diện
Trả lời
Các mẫu thiết kế có nghĩa là phải được điều chỉnh theo nhu cầu cụ thể của ứng dụng; họ không quy định các quy tắc đặt trong đá. Đặc biệt cho dù một cái gì đó là một lớp trừu tượng hoặc một giao diện là để bạn quyết định, xem xét tất cả các tác động mà quyết định có cho phần còn lại của ứng dụng.
Điều đó nói rằng, giao diện được đề xuất trên các lớp trừu tượng nói chung vì nhiều lý do. Ví dụ, các lớp trừu tượng yêu cầu bạn sử dụng thừa kế và trong nhiều ngôn ngữ bạn không thể kế thừa từ nhiều lớp. Nếu đó không phải là vấn đề đối với trường hợp sử dụng của bạn, hãy tiếp tục và sử dụng các lớp trừu tượng nếu bạn thấy chúng thuận tiện hơn.
Tại sao không chỉ có một lớp trừu tượng triển khai Chủ đề? Sử dụng giao diện chỉ mang lại cho bạn sự linh hoạt lớn hơn. Nó không thực sự mua cho bạn bất cứ điều gì để bắt đầu với một lớp trừu tượng. Nếu mọi thứ thay đổi rất nhiều (nói rằng vượt qua ranh giới quá trình) thì Observable của bạn sẽ bị mắc kẹt với việc thực hiện trừu tượng.
ổn cảm ơn u tất cả các chàng trai đã giúp rất nhiều :) – Maximosaic
tại sao không được nó tốt hơn để có đề tài này một lớp trừu tượng
Để tránh buộc thiết kế để triển khai thực hiện cụ thể nói riêng. Hãy nhớ rằng mục đích là để tạo ra một mô hình mà sẽ cung cấp cho bạn sự linh hoạt để trao đổi các đối tượng cụ thể khi cần thiết và không có các nhà quan sát gắn với bất kỳ triển khai ban đầu nào có.
Bạn không muốn người quan sát tham chiếu FirstConcreteSubject
, mà là giao diện ISubject
, có thể nhanh chóng được thay đổi để được triển khai bởi SecondConcreteSubject
mà không cần phải sửa đổi người quan sát.
Điều đó nói rằng, không có gì sai (IMHP) khi có lớp trừu tượng BaseSubject
để lưu trữ một số mã có thể được sao chép bằng FirstConcreteSubject
và SecondConcreteSubject
.
Trong mẫu thiết kế khi giao diện từ được sử dụng, nó có nghĩa là API trừu tượng được tiếp xúc với thành phần ứng dụng khách sẽ có các triển khai cụ thể khác nhau.
Khi giao diện mẫu thiết kế ánh xạ tới thế giới Java, nó có thể là giao diện Java hoặc lớp trừu tượng Java và thiết kế bản đồ lớp bê tông cho lớp thông thường Java (không trừu tượng).
Tuy nhiên khi đưa ra quyết định bạn cần phải hiểu sự khác biệt giữa giao diện Java và lớp trừu tượng và mục đích của chúng cũng như ưu và nhược điểm.
- 1. Các loại chung so với lớp trừu tượng/Giao diện
- 2. Mẫu thiết kế quan sát - Các đối tượng và quan sát bê tông
- 3. Tạo giao diện cho mẫu lớp trừu tượng trong C++
- 4. So sánh: phương pháp giao diện so với phương pháp ảo so với phương pháp trừu tượng
- 5. Ràng buộc về thông số loại: giao diện so với lớp trừu tượng
- 6. Builder design pattern - Không có lớp trừu tượng/giao diện
- 7. C# Trang trí - Giao diện hoặc Lớp trừu tượng?
- 8. Phương pháp tĩnh trong giao diện/lớp trừu tượng
- 9. Mẫu quan sát đa luồng
- 10. Giao diện/Mã hóa lớp trừu tượng Tiêu chuẩn
- 11. Mở rộng giao diện cho lớp trừu tượng
- 12. tham chiếu trừu tượng cho giao diện chung
- 13. Giao diện Qt hoặc lớp trừu tượng và qobject_cast()
- 14. C# Lớp trừu tượng triển khai Giao diện
- 15. lớp trừu tượng không thực hiện giao diện
- 16. Quan sát/Quan sát Android
- 17. Tại sao tuyên bố giao diện là trừu tượng?
- 18. Java lớp trừu tượng thực hiện giao diện
- 19. Cần cho lớp trừu tượng cũng như giao diện?
- 20. lớp trừu tượng thuần túy và giao diện
- 21. Giao diện có mức trừu tượng cao nhất không?
- 22. sử dụng từ khóa trừu tượng trong giao diện
- 23. trừu tượng thực hiện giao diện rõ ràng trong C#
- 24. Khai báo tín hiệu trừu tượng trong lớp giao diện
- 25. Giao diện và lớp trừu tượng chỉ với các phương thức trừu tượng ảo có giống nhau không?
- 26. KnockoutJS - Dải quan sát của các đối tượng quan sát
- 27. Mẫu quan sát bằng ngôn ngữ Go
- 28. Ưu điểm/nhược điểm của đối tượng quan sát toàn cầu so với mixin
- 29. Sử dụng make_shared với một constructor được bảo vệ + giao diện trừu tượng
- 30. Đặc điểm so với giao diện so với Mixins?
Trong nhiều cách, mô hình lý tưởng sẽ có một lớp trừu tượng mà thực hiện một giao diện, nhưng không bao giờ xác định bất kỳ địa điểm lưu trữ của trừu tượng loại lớp - luôn sử dụng giao diện. Điều đó sẽ cho phép các lớp có thể lấy được từ kiểu trừu tượng để đơn giản thừa hưởng mã hữu ích, trong khi các lớp bắt nguồn từ các kiểu khác có thể nhập bất kỳ mã phổ biến nào như là bản mẫu. Cách tiếp cận sẽ thất bại, tuy nhiên, nếu một số người tiêu dùng loại sử dụng loại trừu tượng hơn là loại giao diện, mặc dù điều đó không cần thiết trừ khi các lớp cần truy cập dữ liệu cá nhân của các cá thể khác. – supercat