ไม่มีอะไรผิดปกติกับโซลูชันของคุณ
แต่ความชอบส่วนตัวของฉันก็คือวิธีการเหล่านั้นไม่มีประโยชน์ และเพียงแค่ทำให้ส่วนต่อประสานของวัตถุอะไรก็ตามที่มันว่างอยู่
รหัสvoid moveCameraTo(double latitude, double longitude)
ไม่ได้ทำให้รหัสง่ายขึ้นอย่างที่ฉันเห็นไม่มีปัญหาเพียงแค่เรียกmoveCameraTo(new LatLng(latitude, longitude));
มัน วิธีนี้ยังมีกลิ่นของความหลงใหลดั้งเดิม
void moveCameraTo(Location location)
สามารถแก้ไขได้ดีกว่าโดยการพิสูจน์และวิธีการเรียกLocation.ToLatLng()
moveCameraTo(location.ToLatLng())
หากนี่คือ C # และหากวิธีการดังกล่าวมีความจำเป็นอย่างแท้จริงฉันต้องการให้พวกเขาเป็นวิธีการขยายแทนวิธีการเช่น การใช้วิธีการขยายจะเห็นได้ชัดเจนมากถ้าคุณลองบทคัดย่อและทดสอบหน่วยตัวอย่างนี้ เนื่องจากเป็นการง่ายกว่าที่จะปลอมแปลงวิธีการเดียวแทนการโอเวอร์โหลดหลายครั้งด้วยการแปลงอย่างง่าย
ฉันคิดว่าด้วยวิธีนี้ฉันจะกำจัดความรับผิดชอบในการรู้ว่า LatLng ในคลาสอื่นเป็นอย่างไร
ฉันไม่เห็นเหตุผลว่าทำไมนี่จึงเป็นปัญหา ตราบใดที่ระดับอ้างอิงรหัสของคุณที่มีก็ยังคงขึ้นอยู่กับทางอ้อมvoid moveCameraTo(LatLng latLng)
LatLng
แม้ว่าคลาสนั้นจะไม่ยกตัวอย่างโดยตรง
และคุณไม่จำเป็นต้องเตรียมข้อมูลก่อนเรียกฟังก์ชั่น
ฉันไม่เข้าใจว่าคุณหมายถึงอะไร ถ้ามันหมายถึงการสร้างอินสแตนซ์ใหม่หรือเปลี่ยนคลาสจากที่หนึ่งเป็นอีกแบบฉันไม่เห็นปัญหาเลย
เมื่อคิดถึงมันแล้วฉันรู้สึกว่าสิ่งที่ฉันพูดนั้นได้รับการสนับสนุนจากการออกแบบ API ของ. NET ด้วยเช่นกัน ในอดีตแล้วคลาสของ. NET จำนวนมากนั้นใช้วิธีการของคุณในการมีโอเวอร์โหลดจำนวนมากพร้อมพารามิเตอร์ที่แตกต่างกันและการแปลงภายในอย่างง่าย ๆ แต่นั่นคือก่อนที่วิธีการขยายมีอยู่ คลาส NET ที่ทันสมัยกว่านั้นมีน้ำหนักเบากว่าใน API ของตนเองและหากมีวิธีใด ๆ ที่มีพารามิเตอร์มากเกินไปจะมีการจัดเตรียมเป็นวิธีส่วนขยาย ตัวอย่างที่เก่ากว่าคือNLog ILoggerที่มีโอเวอร์โหลดจำนวนมากสำหรับการเขียนเพื่อบันทึก เปรียบเทียบกับMicrosoft.Extensions.Logging.ILogger ที่ใหม่กว่าซึ่งมีทั้งหมด 3 วิธี (และมีเพียง 1 ถ้าคุณนับการบันทึกเอง) แต่มีจำนวนมากของผู้ช่วยเหลือและ parametrizations ต่างๆเป็นวิธีการขยาย
ฉันคิดว่าคำตอบนี้แสดงให้เห็นว่าบางภาษาจะมีเครื่องมือในการออกแบบเช่นนี้ดีกว่า ฉันไม่ค่อยรู้จัก Java มากนักดังนั้นฉันไม่แน่ใจว่าจะมีสิ่งใดเทียบเท่า แต่ถึงแม้จะใช้วิธีการคงที่ธรรมดาอาจเป็นตัวเลือก