Припустимо, я працюю над існуючою, досить великою системою. У мене є 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
який був доменним об’єктом.