เมื่อพัฒนาใน OOP บางครั้งจะมีการกำหนดอินเทอร์เฟซ / สัญญาโดยห้องสมุดที่คุณไม่สามารถเปลี่ยนแปลงได้ มาเรียกอินเตอร์เฟสนี้ว่า J
ตอนนี้คุณมีออบเจ็กต์คลาส A ที่ใช้วัตถุที่ใช้อินเทอร์เฟซนี้ ข้างในจำเป็นต้องมีข้อกำหนดของอินเตอร์เฟสเพียงเล็กน้อย ฉันสร้างคลาสวัตถุบางอย่างในระหว่างโครงการ (ลองเรียกหนึ่งในประเภท D) ดังนั้นจึงมีค่าใช้จ่ายในการดำเนินการทุกอย่างภายในส่วนติดต่อ J
ฉันต้องการใช้ฟังก์ชั่นย่อยในอินเตอร์เฟส J แต่โซลูชันของฉันยังไม่เป็นที่พอใจ:
- การนำทุกแง่มุมของ J ไปใช้แล้วโยน "notImplementedExceptions" ให้ผู้ใช้วัตถุของฉันเข้าใจผิด: ดูเหมือนว่าวัตถุประเภท D ของฉันจะสอดคล้องกับส่วนต่อประสาน J แต่พวกเขาทำไม่ได้ - และผู้บริโภควัตถุอื่นของฉัน J) ไม่สามารถพึ่งพาความสมบูรณ์ของวัตถุของฉัน
- การใช้อินเทอร์เฟซที่กำหนดใหม่ห้ามไม่ให้ฉันใช้วัตถุที่ใช้เฉพาะอินเตอร์เฟส J แม้ว่าอินเตอร์เฟส J จะเข้ากันได้กับส่วนต่อประสานของฉันเอง
- การปล่อยให้วัตถุที่กำหนดเองของฉันใช้อินเตอร์เฟส J จะสร้างค่าใช้จ่ายที่สำคัญเพราะพวกเขาไม่ต้องการฟังก์ชันทั้งหมดนี้
เมื่อฉันสามารถเปลี่ยนอินเตอร์เฟส J ได้ฉันจะสร้าง "super-interface" K ที่มีชุดย่อยของฟังก์ชัน J interface นี้และทำให้ Interface J สืบทอดจากอินเตอร์เฟส K แต่ฉันไม่สามารถเปลี่ยนอินเตอร์เฟส J ได้
การแก้ปัญหาเชิงวัตถุสำหรับปัญหานี้คืออะไร? ทางออกที่ดีที่สุดยังคงใช้งานอินเทอร์เฟซ "เพิ่ง" J หรือไม่? หรือมีวิธี OOP ในการ "superclass" อินเทอร์เฟซโดยไม่มีการเปลี่ยนแปลงหรือไม่