Mevcut, oldukça büyük bir sistem üzerinde çalıştığımı varsayalım. myObject
Sınıfın bir nesnesi var MyClass
(örneğin uğruna, Java'da çalıştığımı varsayalım). myObject
a Collection
, mesela a List
ve diğer (önemsiz) objeleri içeren bir bileşimdir . Bu, maruz kalmamasını List
sağlamak için sadece oluştuğu yöntemleri çağırmaya hizmet eden temsilci yöntemleri içerir List
(terminolojimi yanlış anladığım için üzgünüm).
Bunun List
bir List<String>
neden olduğunu söyleyebiliriz, ancak bazı nedenlerden dolayı ana erişim yöntemi sınıf için bir maske yöntemidir SomeOtherClass
. Eğer yeni bir değer çifti eklemek isteseydim List
, SomeOtherClass
çağrılmış bir cisim olurdu someObject
. Ben çağırır myObject.insert(someObject)
ve insert
yöntemin içinde String
içine koymak için alacak bir sihir olurdu List<String>
.
Diyelim ki sadece bir değerim var String
ve SomeOtherClass
eklenecek nesne yok . insert
Yöntemi değiştiremediğim varsayılıyor çünkü bu sistemdeki her şeyi kıracak. O zaman insert
yöntemi aşırı yüklemem gerekir mi? Yoksa SomeOtherClass
her aramak istediğimde yeni bir nesne mi oluşturmalıyım insert
?
Ben aşırı yük olsaydı, böyle bir şey olurdu sanırım ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Bu örnek, dün karşılaştığım aşırı yükleme ile ilgili benzer (biraz daha karmaşık) bir duruma dayanan yapmacık bir bulmaca. Belirsiz bir şey varsa genişleteceğim)
Burası bir yöntemi aşırı yüklemek için uygun bir yer olabilir mi? Değilse, ne zaman bir yöntemi aşırı yüklemeliyim?
magicStringMethod()
benim örneğimde, benim durumumda, bir etki alanı nesnesi olan bir String
temsilini alır SomeOtherObject
.