สํารวจการใช้งานอินเทอร์เฟซเริ่มต้น
การปรับใช้อินเทอร์เฟซเริ่มต้น ช่วยให้คุณสามารถเพิ่มวิธีการใหม่ลงในอินเทอร์เฟซโดยตรงและนําเสนอการใช้งานเริ่มต้น คลาสที่ใช้อินเทอร์เฟซนี้ สามารถใช้เมธอดค่าเริ่มต้นหรือสามารถแทนที่และนําเสนอการใช้งานของตนเองได้
การใช้งานเริ่มต้น
การใช้งานเริ่มต้นในอินเทอร์เฟซช่วยให้คุณเพิ่มวิธีการใหม่ลงในอินเทอร์เฟซโดยไม่ก่อให้เกิดปัญหา
- อินเทอร์เฟซสามารถระบุเนื้อความสําหรับวิธีการโดยใช้การดําเนินการเริ่มต้น
- คลาสที่ใช้อินเทอร์เฟซไม่จําเป็นต้องเขียนเวอร์ชันของตัวเองของวิธีการเหล่านี้
- คุณลักษณะนี้จะช่วยเมื่อคุณต้องการเปลี่ยนอินเทอร์เฟซโดยไม่ทําให้อะไรเสียหาย
หมายเหตุ
แม้ว่าจะมีการใช้งานตามค่าเริ่มต้น แต่คลาสจะไม่ได้รับวิธีการของอินเทอร์เฟซโดยอัตโนมัติ ในการใช้วิธีการ จากอินเทอร์เฟซ ตัวแปรต้องเป็นของชนิดอินเทอร์เฟซ
ประโยชน์
การใช้งานเริ่มต้นในอินเทอร์เฟซมีประโยชน์หลายประการ:
- นําโค้ดกลับมาใช้ใหม่: คุณสามารถแชร์ฟังก์ชันทั่วไปในการใช้งานที่แตกต่างกันโดยไม่ต้องคัดลอกโค้ด
- ความเข้ากันได้ย้อนหลัง: คุณสามารถเพิ่มวิธีการใหม่ไปยังอินเทอร์เฟซโดยไม่ต้องเปลี่ยนคลาสทั้งหมดโดยใช้อินเทอร์เฟซเพื่อป้องกันการเปลี่ยนแปลงที่เสียหาย
- ความยืดหยุ่น: คลาสที่ใช้อินเทอร์เฟซสามารถเปลี่ยนการใช้งานเริ่มต้นหากพวกเขาต้องการลักษณะการทํางานที่แตกต่างกัน
ตัวอย่างเช่น สมมติว่าคุณกําลังทํางานกับระบบการจัดการลูกค้าและคุณเพิ่มวิธีใหม่เพื่อใช้ส่วนลดความภักดีในอินเทอร์เฟซที่มีอยู่ วิธีการเริ่มต้นจะคํานวณส่วนลดพื้นฐาน แต่ถ้าระดับ "ลูกค้า VIP" ต้องการการคํานวณที่แตกต่างกัน จะสามารถปรับเปลี่ยนวิธีนี้ได้
กําหนดการใช้งานเริ่มต้น
ไวยากรณ์สําหรับการกําหนดการใช้งานเริ่มต้นในอินเทอร์เฟซจะขยายการประกาศอินเทอร์เฟซเพื่อรวมเนื้อความของเมธอด ตัวอย่างต่อไปนี้กําหนดการใช้งานเริ่มต้นในอินเทอร์เฟซตามสถานการณ์ของระบบการจัดการลูกค้า:
interface ICustomer
{
int CustomerId { get; set; } // No default implementation
void ApplyLoyaltyDiscount()
{
// default implementation
Console.WriteLine("Applying 10% loyalty discount.");
}
}
ใน ApplyLoyaltyDiscount ตัวอย่างนี้ เมธอด มีการใช้งานเริ่มต้นภายใน ICustomer อินเทอร์เฟซ
CustomerIdคุณสมบัติยังถูกกําหนดไว้ในอินเทอร์เฟซ แต่ไม่มีการดําเนินการตามค่าเริ่มต้น
หมายเหตุ
จาก C# 8.0 เป็นต้นไป อินเทอร์เฟซสามารถรวมการใช้งานวิธีการเริ่มต้นได้ การเปลี่ยนแปลงช่วยให้สามารถเพิ่มวิธีการใหม่ในอินเทอร์เฟซโดยไม่ต้องแบ่งโค้ดที่มีอยู่ คลาสสามารถใช้ค่าเริ่มต้นเหล่านี้หรือนําเสนอการใช้งานของตนเองได้
ถัดไป ใช้ระดับชั้น "VIPCustomer" ที่ต้องมีการคํานวณส่วนลดที่แตกต่างกัน คลาสนี้สามารถใช้ ICustomer อินเทอร์เฟซ ให้การดําเนินการของตนเองสําหรับ CustomerId คุณสมบัติ และแทนที่ ApplyLoyaltyDiscount วิธีการ ดังกล่าว:
class VIPCustomer : ICustomer
{
public int CustomerId { get; set; } // Implementing property from interface
void ICustomer.ApplyLoyaltyDiscount()
{
// override default implementation for VIP customers
Console.WriteLine($"Applying 20% loyalty discount for VIP customer with ID {CustomerId}.");
}
}
ในกรณีนี้ VIPCustomer คลาส จะใช้ส่วนลด 20% แทนที่จะเป็น 10%เริ่มต้น
CustomerIdใช้ ในข้อความเมื่อใช้ส่วนลด
การดําเนินการตามค่าเริ่มต้นในอินเทอร์เฟซจะช่วยให้สามารถเพิ่มวิธีการใหม่ด้วยวิธีการที่ระบุไว้ในอินเทอร์เฟซ การใช้งานเริ่มต้นจะเลื่อนระดับการนําโค้ดกลับมาใช้ใหม่ ความเข้ากันได้ย้อนหลัง และความยืดหยุ่น เป็นเครื่องมือในทางปฏิบัติใน C# Object-Oriented การเขียนโปรแกรม ที่ช่วยเพิ่มความสามารถในการปรับตัวโดยไม่รบกวนโค้ดที่มีอยู่