สมมติว่าฉันกำลังทำงานกับระบบที่มีอยู่และมีขนาดใหญ่พอสมควร ฉันมีวัตถุmyObject
ของคลาสMyClass
(เพื่อประโยชน์ของตัวอย่างสมมติว่าฉันทำงานใน Java) myObject
เป็นองค์ประกอบที่ประกอบด้วย a Collection
, say, a List
และวัตถุอื่น ๆ ที่ (ฉันคิดว่า) ไม่เกี่ยวข้อง มันมีวิธีการมอบหมายซึ่งเพียงแค่ให้บริการที่จะเรียกร้องให้วิธีการของList
มันประกอบด้วยเพื่อให้แน่ใจว่าList
มันจะไม่ได้สัมผัส (ขออภัยถ้าฉันมีคำศัพท์ของฉันผิด)
Let 's พูดที่ว่านี้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
ซึ่งเป็นวัตถุโดเมน