ฉันเห็นสิ่งที่คุณทำกับ 2 คุณกำลังใช้คลาสเป็นแพ็กเกจและแพ็กเกจเป็นโมดูลเพื่อให้คุณสามารถแยกตัวเองออกจากแพ็คเกจ แต่ยังคงจัดระเบียบภายในแพ็คเกจโดยใช้คลาส
มันฉลาดมาก ระวังฉลาด
สิ่งนี้จะบังคับให้คุณติดคลาสหลายคลาสในไฟล์ต้นฉบับเดียวกัน (ซึ่งคุณอาจชอบ) และพา ธ จะมีคำตัวพิมพ์ใหญ่พิเศษ
สิ่งนี้จะบังคับให้คุณเขียนรหัสทดสอบใด ๆ ภายในแพ็คเกจยกเว้นว่าคุณใช้การสะท้อนกลับเพื่อแฮ็กทางจากภายนอก
อื่น ๆ จากนั้นสิ่งนี้จะทำงาน มันจะดูแปลก ๆ
ผู้คนคุ้นเคยกับการใช้คลาสภายในมากขึ้นเช่นEntrySetใน Hashtable มันเป็นแบบส่วนตัวดังนั้นฉันไม่สามารถสร้างมันได้ แต่ใช้อินเทอร์เฟซสาธารณะดังนั้นฉันจึงคุยกับมันผ่านทางอินเทอร์เฟซและมีสิ่งที่ฉันต้องการ
แต่คุณกำลังอธิบายชั้นเรียนที่คุณไม่ต้องการให้ฉันคุยด้วยผ่านทางอินเทอร์เฟซ ดังนั้นจึงไม่มีส่วนต่อประสานสำหรับฉัน ซึ่งหมายความว่าฉันไม่มีอะไรให้ดูและสับสนโดย (เว้นแต่คุณจะให้ข้อมูลแก่ฉัน)
ปัญหาที่ใหญ่ที่สุดที่ฉันคาดหวังคือนี่คือมือใหม่ที่สับสนในการดูแล API คุณสามารถโยนเอกสารและความคิดเห็นที่พวกเขา แต่ไม่สามารถเพิ่มเมื่อพวกเขาไม่ได้อ่านหรือเชื่อถือทั้ง
คุณได้สร้างรูปแบบอื่นที่ทำให้เกิดความบกพร่องในภาษา Java ไม่มีตัวดัดแปลงการเข้าถึงที่ให้สิทธิ์การเข้าถึงกลุ่มของแพ็กเกจ ฉันได้ยินมาว่ามีการเสนอตัวดัดแปลงการเข้าถึง "โมดูล" แต่ไม่เห็นสัญญาณว่าเกิดขึ้น
ตัวดัดแปลงการเข้าถึงเริ่มต้น (ไม่มีตัวแก้ไข) น่าจะเป็นสิ่งที่คุณจะใช้ที่นี่ยกเว้นคุณไม่รังเกียจที่จะแอบดูผ่านการสืบทอดซึ่งจะได้รับการป้องกัน
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
สิ่งที่คุณต้องการคือการเข้าถึงโมดูล ด้วยวิธีนี้คุณสามารถทำการทดสอบในแพ็คเกจและรหัสอื่นได้ น่าเสียดายที่เราไม่มีใน Java
คนส่วนใหญ่ทำ 1 และขยาย API การใช้อินเตอร์เฟซที่เหมาะสมจะช่วยลดแรงกดดันในการใช้
การแฮ็กสิ่งที่คุณต้องการให้เป็น 1 นั้นน่าเกลียดมาก ดูที่ call stack และโยนข้อยกเว้นเมื่อใดก็ตามที่สิ่งที่เรียกว่าคุณมาจากแพ็คเกจที่คุณไม่ชอบ Eeew