10/10/2018, 10:31
[PHP] Interface trong OOP
Cho em hỏi nó là gì và tại sao phải dùng nó, và một ví dụ. Em mò mãi ko hiểu, thanks
Theo như em biết là interface dùng để chỉ định phương thức nào một class phải có, nhưng em ko hiểu làm thế để chi nhỉ
Theo như em biết là interface dùng để chỉ định phương thức nào một class phải có, nhưng em ko hiểu làm thế để chi nhỉ
Bài liên quan
Sử dụng Interface để điểu khiển dể hơn.
Ví dụ:
IChatService -> là interface của những chat service này!
MSNChatService
YAHOOChatService
AOLChatService
tất cả nhuũng chatservice này họ sẽ dùng cùng một command đó là Send Message and Recieve Message
Tuy rằng code có thể khác nhau ... nhưng nếu send message thi` ho. sẽ share cùng function name.
IChatService.send(username, message)
Khi chúng ta có cái interface ... chúng ta bắt buột những class chat fải có function và như vậy chúgn ta có thể điều khiển code một cách hiệu quả hơn!
Hy vọng giúp được bạn phần nào!
Các class khi sử dụng interface phải implement các method trong interface nếu không nó sẽ trở thành abstract class và không thể tạo object.
Mục đích của kế thừa là reuse lại code. Interface đâu có cho reuse lại code. Chính vì thế nó mới đi với từ
Mục đích của interface là để tạo ra các ràng buộc về giao diện. Điều này là code lõi của của cái gọi là Design By Contract.
Người ta dùng nó làm gì và trong bối cảnh nào:
+ Bối cảnh thực tế: Có 3 ông khách vào một tòa nhà được bảo vệ nghiệm ngặt. Tòa nhà đó có 2 lớp kiểm tra:
- Kiểm tra hộ chiếu hay CMT
- Kiểm tra lịch hẹn
Vậy thì khi 3 ông khách vào, 3 ông sẽ phải thực hiện bắt buộc 2 thủ tục nó trên. Nghĩa là 3 ông dù có khác nhau thế nào, cao hay thấp đều phải có 2 khả năng này.
+ Mô tả tình huống trên bằng code thì sẽ có 3 class khác nhau nhưng chúng đều có 2 phương thức sau đây
-- getPassport()
-- getName()
Bây giờ chúng ta gói 2 phương thức nói trên vào một tên gọi chung là interface GuestRequirement
Giả sử như lớp sử dụng (lớp của tòa nhà) có tên là SecurityStaff, nó sẽ sử dụng các lớp ràng buộc bởi interface như sau:
Các bạn sẽ phải phân biệt cái gọi là
+ Reuse code: kế thừa lớp mẹ để không phải duplicate lại code.
+ Constrained by interface mà mục tiêu của nó là đảm bảo việc truyền message bên trong lớp sử dụng. Code bị duplicate là bình thường
dd không có nút thanks nhỉ?
Bác @pcdinh diễn tả rất dễ hiểu. Ngoài ra các bạn có thể tham khảo ở đây: http://www.talkphp.com/vbarticles.ph...actory-pattern
bác nào giải thích giúp em đc ko ạ ?