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?
object-oriented
class-design
Fuzz ringan
sumber
sumber
Jawaban:
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 ...
sumber
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.
sumber