Предположим, я работаю над существующей, достаточно большой системой. У меня есть объект 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
что был объект домена.