Câu hỏi này là loại bỏ ngỏ, nhưng đây là quan điểm của tôi:
Mục đích của một tuyên bố giao diện là hai điều:
- Khai báo tự trong tương lai của bạn hay đồng nghiệp những gì phương pháp lớp này phải có
- Khai báo vào máy tính của bạn những gì phương pháp lớp này phải có
Nếu chúng ta lấy mục đích thứ hai đầu tiên, mã nguồn Ruby là không bao giờ compi dẫn đầu, do đó, không bao giờ có một tùy chọn để xác minh sự phù hợp với khai báo giao diện và cảnh báo cho nhà phát triển về bất kỳ lỗi nào không phù hợp. Điều này có nghĩa rằng nếu Ruby có một số hỗ trợ giao diện tích hợp sẵn, nó sẽ không có tùy chọn để xác minh sự phù hợp cho đến khi thời gian chạy, nơi mà ứng dụng sẽ gặp sự cố, vì việc triển khai bị thiếu.
Quay lại mục đích đầu tiên. Mã khả năng đọc. Điều này có thể có ý nghĩa và quy ước cụ thể của Ruby về việc chỉ định các giao diện có thể hữu ích. Bây giờ, bạn có lẽ sẽ giao tiếp điều này bằng cách sử dụng các nhận xét hoặc thông số kỹ thuật hoặc - như tôi có lẽ sẽ thích - một mô-đun bao gồm khai báo. Ví dụ.
module Shippable
# This is an interface module. If your class includes this module, make sure it responds to the following methods
# Returns an integer fixnum representing weight in grams
def weight
raise NotImplementedError.new
end
# Returns an instance of the Dimension class.
def dimensions
raise NotImplementedError.new
end
# Returns true if the entity requires special handling.
def dangerous?
raise NotImplementedError.new
end
# Returns true if the entity is intended for human consumption and thereby must abide by food shipping regulations.
def edible?
raise NotImplementedError.new
end
end
class Product
include Shippable
end
Một cách thực thi giao diện này sẽ là bằng cách tạo ra một spec mà tạo ra một thể hiện của mỗi lớp bao gồm các module Shippable
, gọi là bốn phương pháp và hy vọng họ không làm tăng NotImplementedError
.
Nguồn
2013-05-05 12:42:27
PHP là ngôn ngữ OOP? * cười khúc khích * – NullUserException
http://en.wikipedia.org/wiki/Mixin – robinjam
PHP 5 (tôi nghĩ đó là phiên bản) đã giới thiệu khái niệm thiết kế OOP cho PHP nhưng nó không làm cho nó trở thành ngôn ngữ "OOP". Bạn có thể viết mã PHP kiểu OOP ngay bây giờ. –