สมมติว่าฉันกำลังทำงานกับระบบที่มีอยู่และมีขนาดใหญ่พอสมควร ฉันมีวัตถุmyObjectของคลาสMyClass(เพื่อประโยชน์ของตัวอย่างสมมติว่าฉันทำงานใน Java) myObjectเป็นองค์ประกอบที่ประกอบด้วย a Collection, say, a Listและวัตถุอื่น ๆ ที่ (ฉันคิดว่า) ไม่เกี่ยวข้อง มันมีวิธีการมอบหมายซึ่งเพียงแค่ให้บริการที่จะเรียกร้องให้วิธีการของListมันประกอบด้วยเพื่อให้แน่ใจว่าListมันจะไม่ได้สัมผัส (ขออภัยถ้าฉันมีคำศัพท์ของฉันผิด)
Let 's พูดที่ว่านี้Listเป็นแต่ด้วยเหตุผลบางอย่างที่วิธีการเข้าถึงหลักเป็นวิธีหน้ากากสำหรับการเรียนList<String> SomeOtherClassถ้าผมอยากจะใส่คู่ค่าใหม่เข้าไปในของฉันListแล้วฉันมีวัตถุของที่เรียกว่าSomeOtherClass someObjectฉันต้องการโทรmyObject.insert(someObject)และภายในinsertวิธีการจะมีความมหัศจรรย์บางอย่างที่จะดึงข้อมูลที่จะใส่ลงไปในStringList<String>
สมมติว่าตอนนี้ฉันมีStringค่าและไม่มีSomeOtherClassวัตถุที่จะแทรก สมมติว่าฉันไม่สามารถปรับเปลี่ยนinsertวิธีการเพราะมันจะทำลายทุกอย่างในระบบนี้ จากนั้นฉันควรใช้insertวิธีมากเกินไปหรือไม่ หรือฉันควรสร้างวัตถุใหม่ของSomeOtherClassเวลาที่ฉันต้องการที่จะเรียกทุกคนinsert?
ฉันเดาว่าถ้าฉันทำมากไปมันจะมีลักษณะเช่นนี้ ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(ตัวอย่างนี้เป็นจิ๊กซอว์ที่ออกแบบมาตามสถานการณ์ที่คล้ายกัน (ซับซ้อนกว่าเล็กน้อย) เกี่ยวกับการบรรทุกเกินพิกัดที่ฉันพบเมื่อวานนี้ฉันจะขยายมันหากมีสิ่งใดที่ไม่ชัดเจน)
นี่เป็นสถานที่ที่เหมาะสมในการโอเวอร์โหลดเมธอดหรือไม่? ถ้าไม่ฉันควรโอเวอร์โหลดเมธอดเมื่อใด
magicStringMethod()ในตัวอย่างของฉันในกรณีของฉันจะได้รับการStringแสดงSomeOtherObjectซึ่งเป็นวัตถุโดเมน