GIỚI THIỆUNguyên tắc SOLID nào bị vi phạm?
tôi làm việc trên luận án thạc sĩ của tôi về vấn đề thừa kế và làm việc ra một số chỉ số đó cho thấy một vấn đề thừa kế tồn tại.
Giống như ví dụ sau:
VÍ DỤ
public static String getAnimalNoise(Animal animal) {
if (animal instanceof Dog)
return "Woof";
if (animal instanceof Cat)
return "Miau";
return "";
}
Phương pháp này trả về chuỗi "Woof"
nếu trường hợp động vật nhất định là một Dog
và "Miau"
nếu nó là một Cat
. Chuỗi rỗng bởi vì một số động vật không gây tiếng động gì cả.
Vì vậy, giải pháp đúng cho điều đó nên sử dụng đa hình với phương thức getNoise
trong lớp Động vật.
Tôi đã phân tích các chỉ báo khác nhau về các vấn đề kế thừa và muốn nói nếu một số trong số chúng vi phạm SOLID Principle.
Tôi nghĩ ví dụ trên vi phạm:
- nguyên tắc trách nhiệm đơn (SRP)
- mở/đóng nguyên tắc (OCP)
- Liskov nguyên tắc thay thế (LSP)
- Nguyên tắc đảo ngược phụ thuộc (DIP)
Nhưng tôi không thực sự chắc chắn cho dù đó là sự thật cho tất cả.
tôi nghĩ:
NGUYÊN TẮC VI PHẠM
SRP Vi phạm
Bởi vì báo cáo có điều kiện ở tất cả các vi phạm SRP, bởi vì như switch trường hợp tuyên bố trở lên hơn một câu lệnh if-else được xem xét nhiều hơn một câu trả lời sibility.
Nó tồn tại hai trường hợp vì vậy có nhiều lý do để thay đổi phương pháp.
OCP Vi phạm
Bởi vì nếu một con vật mới được thêm một trường hợp mới phải được bổ sung vào phương pháp nên Phương pháp chưa chặt chẽ cho sửa đổi.
LSP VI PHẠM
Mỗi chi nhánh thực hiện hành động khác nhau phụ thuộc của các loại phụ gia súc. Tôi cho rằng vi phạm số LSP?! Tôi biết ví dụ về hình chữ nhật và hình vuông và getArea nhưng ví dụ tôi nghĩ này cũng phù hợp với vi phạm.
DIP VI PHẠM
Các báo cáo có điều kiện đi sự phụ thuộc đó có nghĩa là những điều khoản phụ thuộc vào chi tiết và không phải trên trừu tượng vi phạm các DIP.
HỎI:
Vì vậy, câu hỏi là, cho ví dụ được đưa ra, được các nguyên tắc cho sự vi phạm và là lý do đúng không?
Đây có thể là chủ đề về Programmers.SE hơn. – MSalters