Припустимо, я працюю над існуючою, досить великою системою. У мене є myObjectклас класу MyClass(для прикладу, припустимо, я працюю в Java). myObjectце композиція, що містить Collection, скажімо, а, Listта інші об'єкти, які (я думаю) не мають значення. Він містить делегатні методи, які просто служать для використання методів, з яких Listвін складається, для того, щоб переконатися, що Listвін не піддається (вибачте, якщо я неправильно визначив свою термінологію).
Скажімо, що це List, List<String>але, чомусь, основний метод доступу - це метод маски для класу SomeOtherClass. Якби я хотів вставити нову пару значень у свою List, я мав би об'єкт, який SomeOtherClassназивається someObject. Я б закликав, myObject.insert(someObject)і всередині insertметоду знайдеться якась магія, яка дозволить отримати a, Stringщоб поставити його List<String>.
Припустимо тепер, що у мене є лише Stringзначення, і жоден SomeOtherClassоб’єкт для вставки. Якщо припустити, що я не можу змінити insertметод, оскільки він порушив би все в цій системі. Тоді я повинен перевантажувати insertметод? Або я повинен створювати новий об'єкт SomeOtherClassкожного разу, коли я хочу зателефонувати insert?
Я думаю, якби я це перевантажив, це виглядало б приблизно так ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Цей приклад - це надумана головоломка, заснована на подібній (дещо складнішій) ситуації щодо перевантаження, з якою я зіткнувся вчора. Я розгорну її, якщо буде щось незрозуміле)
Це було б відповідним місцем для перевантаження методу? Якщо ні, коли я повинен перевантажувати метод?
magicStringMethod()у моєму прикладі, у моєму випадку, вийшло б Stringпредставлення того, SomeOtherObjectякий був доменним об’єктом.