Предположим, я работаю над существующей, достаточно большой системой. У меня есть объект myObjectкласса MyClass(для примера, предположим, я работаю в Java). myObjectэто композиция, содержащая Collection, скажем, а Listи другие объекты, которые (я думаю) не имеют значения. Он содержит методы делегата, которые просто служат для вызова методов, из которых Listон состоит, для того, чтобы гарантировать, что Listон не раскрыт (извините, если я неправильно понял мою терминологию).
Допустим , что это Listявляется , List<String>но, по некоторым причинам, основной метод доступа является методом маски для класса SomeOtherClass. Если бы я хотел вставить новую пару значений в свой List, то у меня был бы объект SomeOtherClassвызванного someObject. Я бы позвонил, myObject.insert(someObject)и внутри insertметода была бы какая-то магия, которая бы извлекала и 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что был объект домена.