apakah ini merupakan praktik yang masuk akal untuk memperluas kelas hanya untuk menggunakan kembali satu fungsi?


10

Saya sedang mengembangkan berbagai filter posting untuk situs wordpress, dan saya telah membangun 4 filter pertama dengan satu kelas.

Dua yang terakhir cukup berbeda ruang lingkupnya untuk hanya berbagi fungsi tunggal (fungsi untuk menghasilkan tautan akhir) di kelas mereka.

Apakah masuk akal, baik dalam hal ini atau dalam sejumlah kasus hipotetis serupa, untuk memperluas kelas asli untuk memiliki fungsi itu, atau apakah ada cara yang lebih baik?


Saya tidak mengerti pertanyaan ini. Apa yang Anda maksud dengan membangun sesuatu dengan kelas? Apakah kelas-kelas ini mewarisi sesuatu? Bukankah kelas di puncak hierarki sudah memiliki fungsi yang sama?
David Thornley

Jawaban:


19

Tidak, jika kedua kelas sangat berbeda sehingga mereka hanya berbagi satu fungsi, kemungkinannya mereka tidak dapat dipertukarkan - dan karena itu mereka akan melanggar prinsip substitusi liskov .

Hanya berasal dari kelas dasar jika logis untuk melakukannya. Berbagi sepotong kode jarang menjadi pembenaran untuk warisan :)

Dalam contoh khusus ini, sepertinya Anda ingin menggunakan kembali fungsi itu melalui komposisi ...


3
Lebih suka komposisi daripada warisan! Dalam kebanyakan kasus ini akan membuat Anda hidup lebih sederhana dalam jangka panjang.
Travis

Komposisi FTW!
back2dos

Patut dicatat jawaban saya pada dasarnya sama dengan @Sardathrion, saya baru saja terhubung dengan prinsip-prinsip relevan :)
MattDavey

7

Jika deskripsi kelas memiliki kata " dan " di dalamnya, itu harus dipecah menjadi dua (atau lebih) kelas. Dari hal-hal yang terlihat, Anda bisa menjadikan fungsi itu anggota kelas lain yang direferensikan oleh yang Anda miliki saat ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.