ฉันมีข้อกำหนดที่ฟังก์ชันใช้พารามิเตอร์ที่แตกต่างกันและส่งคืนออบเจ็กต์ที่ไม่ซ้ำใคร ฟังก์ชันทั้งหมดเหล่านี้ดำเนินการแบบเดียวกัน
ie.
public returnObject1 myfunction( paramObject1 a, int a) {
returnObject1 = new returnObject1();
returnObject1.a = paramObject1.a;
return returnObject1;
}
public returnOject2 myfunction( paramObject2 a, int a){
returnObject2 = new returnObject2();
returnObject2.a = paramObject2.a;
return returnObject2;
}
ดังที่คุณเห็นข้างต้น ทั้งสองฟังก์ชันทำงานเดียวกัน แต่ใช้พารามิเตอร์ที่แตกต่างกันเป็นอินพุตและส่งกลับอ็อบเจ็กต์ที่แตกต่างกัน
ฉันต้องการลดการเขียนฟังก์ชันต่างๆ ที่ทำงานเดียวกันให้เหลือน้อยที่สุด
เป็นไปได้ไหมที่จะเขียนวิธีการทั่วไปสำหรับสิ่งนี้ที่สามารถทดแทนพารามิเตอร์ตามการเรียกใช้ฟังก์ชันได้?
paramObject และ returnObject โดยพื้นฐานแล้วเป็นสองคลาสที่มีตัวแปรต่างกัน พวกเขาไม่เกี่ยวข้องกัน
วัตถุประสงค์ของฉันคือ ฉันไม่ต้องการทำฟังก์ชันโอเวอร์โหลด เนื่องจากฟังก์ชันต่างๆ ทำงานเกือบจะเหมือนกัน ฉันต้องการมีฟังก์ชันเดียวที่สามารถจัดการอินพุตและเอาต์พุตส่งคืนที่แตกต่างกันได้
เป้าหมายของฉันคือการทำสิ่งนี้ (ถ้าเป็นไปได้):
public static < E > myfunction( T a, int a ) {
// do work
}
ประเภทการส่งคืน E และอินพุต T สามารถเปลี่ยนแปลงได้
public T myfunction(T param, int a)
ได้ - person Asew   schedule 06.07.2017ReturnObject
หรือParamObject
ซึ่งอย่างหลังไม่น่าจะเป็นไปได้สูงที่จะเป็นความคิดที่ดีที่นี่ เมื่อถึงจุดนี้คุณควรพิจารณาการออกแบบของคุณใหม่ ฉันมีเพียงความคิดที่ค่อนข้างคลุมเครือเกี่ยวกับสิ่งที่คุณกำลังทำอยู่ แต่รูปแบบ Abstract Factory ดูเหมือนว่าจะมีประโยชน์ที่นี่ อาจเป็นกรณีที่การใช้โอเวอร์โหลดตามที่คุณทำไปแล้วเป็นวิธีแก้ปัญหาที่สมบูรณ์แบบ มันยากที่จะพูดโดยไม่รู้อะไรมากกว่านี้ - person Radiodef   schedule 06.07.2017new EitherType()
,objOfUnrelatedType.a = objOfAnotherUnrelatedType.a;
,return objOfEitherType;
) ของวิธีใดวิธีหนึ่ง จะ การกระทำที่แตกต่างกัน เนื่องจากจะไม่นับรวมลักษณะที่ปรากฏของซอร์สโค้ดที่คล้ายคลึงกัน - person Holger   schedule 06.07.2017