기존의 합리적으로 큰 시스템을 작업 중이라고 가정합니다. myObject
클래스 의 객체가 있습니다 MyClass
(예를 들어 Java로 작업한다고 가정). myObject
는 a 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
.