Có phải là một thực hành hợp lý để mở rộng một lớp chỉ để sử dụng lại một chức năng duy nhất?


10

Tôi đang phát triển một loạt các bộ lọc bài đăng cho một trang web wordpress và tôi đã xây dựng 4 bộ lọc đầu tiên với một lớp duy nhất.

Hai cái cuối cùng đủ khác nhau về phạm vi để chỉ chia sẻ một hàm duy nhất (hàm để tạo các liên kết cuối cùng) trong các lớp của chúng.

Có hợp lý không, trong trường hợp này hoặc trong bất kỳ số lượng các trường hợp giả thuyết tương tự nào, để mở rộng lớp ban đầu để có chức năng đó, hoặc có cách nào tốt hơn không?


Tôi không hiểu câu hỏi này. Bạn có ý nghĩa gì khi xây dựng mọi thứ với một lớp học? Là những lớp học được thừa hưởng từ một cái gì đó? Không phải lớp ở đầu phân cấp đã có chức năng chung sao?
David Thornley

Câu trả lời:


19

Không, nếu hai lớp khác nhau đến mức chúng chỉ chia sẻ một chức năng, thì khả năng là chúng không thể thay thế cho nhau - và do đó chúng sẽ phá vỡ nguyên tắc của trạm biến áp liskov .

Chỉ xuất phát từ một lớp cơ sở nếu nó hợp lý để làm như vậy. Chia sẻ một đoạn mã hiếm khi là một sự biện minh cho sự kế thừa :)

Trong ví dụ cụ thể này, có vẻ như bạn muốn sử dụng lại chức năng đó thông qua bố cục thay vì ...


3
Thích thành phần hơn thừa kế! Trong hầu hết các trường hợp, điều này sẽ làm cho cuộc sống của bạn đơn giản hơn trong thời gian dài.
Travis

Thành phần FTW!
back2dos

Đáng chú ý câu trả lời của tôi về cơ bản giống như @Sardathrion, tôi chỉ liên kết với các nguyên tắc có liên quan :)
MattDavey

7

Nếu một mô tả lớp có chữ " " trong đó, thì nó nên được chia thành hai (hoặc nhiều) lớp. Nhìn bề ngoài, bạn có thể biến chức năng đó thành thành viên của một lớp khác được tham chiếu bởi những thứ bạn hiện có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.