Bir meslektaşım, bir temel sınıf veya bir arayüz oluşturmak arasında seçim yapmak için bir kural belirledi.
Diyor:
Uygulamak üzere olduğunuz her yeni yöntemi düşünün. Her biri için şunu düşünün: Bu yöntem , herhangi bir değişiklik yapılmaksızın, tam olarak bu formda birden fazla sınıf tarafından uygulanacak mı? Cevap "evet" ise, bir temel sınıf oluşturun. Diğer her durumda bir arayüz oluşturun.
Örneğin:
Sınıfları düşünün
cat
vedog
sınıf uzanır,mammal
ve tek bir yöntem vardırpet()
. Daha sonraalligator
, hiçbir şeyi genişletmeyen ve tek bir yöntemi olan sınıfı ekliyoruzslither()
.Şimdi,
eat()
hepsine bir yöntem eklemek istiyoruz .Uygulanması halinde
eat()
yöntemi için tam olarak aynı olacaktırcat
,dog
vealligator
biz bir temel sınıf (diyelim diyelim ki, oluşturmalıdıranimal
hangi uygular bu yöntemi).Ancak, uygulanması
alligator
en ufak bir şekilde farklılık gösteriyorsa, birIEat
arayüz oluşturmalı ve onu yapmalımammal
vealligator
uygulamalıyız.
Bu yöntemin tüm vakaları kapsadığı konusunda ısrar ediyor, ancak bana göre aşırı basitleştirme gibi görünüyor.
Bu genel kurallara uymaya değer mi?
is a
ve arayüzlerin acts like
ya da olduğunu öğretti is
. Yani bir köpek is a
memelisi ve acts like
bir yiyen. Bu bize memelinin bir sınıf ve yiyicinin bir arayüz olması gerektiğini söylerdi. Her zaman çok yardımcı bir rehber olmuştur. Sidenote: bir örnek is
olacağını The cake is eatable
ya The book is writable
.
alligator
'nin uygulanması,eat
elbette, kabul ettiğicat
vedog
parametre olarak farklı olduğu yönündedir.