2012-09-02 34 views
5

Tôi nhận thấy rằng khi tôi định nghĩa một phương thức trừu tượng, chữ ký của các lớp con cần phải tương thích với nó. Điều này khiến tôi có cơ hội sử dụng kiểu kiểm tra trong chữ ký của lớp con.Phương pháp trừu tượng PHP so với phương pháp mặc định

Nếu tôi xác định phương thức gốc làm phương pháp cụ thể với triển khai mặc định, tôi có thể ghi đè lên phương thức gốc mà không tuân thủ giao diện của nó.

Trong trường hợp có triển khai mặc định phù hợp, tôi có khuynh hướng sử dụng phương pháp thứ hai. Nhưng tôi có để mình gặp rắc rối không?

Nó chỉ có vẻ lạ với tôi rằng việc sử dụng 'trừu tượng' có thể rất hạn chế, vì vậy tôi muốn biết nếu tôi là thiếu cái gì ...

Lưu ý - Tôi thấy rằng câu hỏi tương tự đã được yêu cầu liên quan đến các ngôn ngữ khác, nhưng không quá nhiều PHP.

+4

Thực ra nó chỉ là một thực hành tốt mà bạn tôn trọng giao diện. http://en.wikipedia.org/wiki/Liskov_substitution_principle – zerkms

Trả lời

7

Đây là một câu hỏi rất rộng, nhưng trong vài từ:

Nếu bạn không tôn trọng các giao diện - nó tạo ra thiết kế mỏng manh, bởi vì mặc dù theo định nghĩa mỗi đứa trẻ cần hỗ trợ tất cả các giao diện tổ tiên - bạn phá vỡ nó, bu định nghĩa các giao diện không tương thích.

Có một luật tốt về điều đó: http://en.wikipedia.org/wiki/Liskov_substitution_principle

Ngoài ra, nó thường là một dấu hiệu, mà bạn nên thích phân quyền đối với thừa kế.

4

Giao diện (hoặc lớp trừu tượng) thực thi tính nhất quán với các lớp học của bạn. Đó là một hợp đồng bạn có giữa bạn và lớp bạn kế thừa từ đó. Sự nhất quán này là chìa khóa khi một số người đang viết mã, và bạn muốn trao đổi các lớp học một cách đáng tin cậy.

Các vấn đề liên quan