บางทีตัวอย่างรหัสอาจช่วยได้ฉันจะใช้ C # แต่คุณควรทำตามได้
ให้แกล้งทำเป็นว่าเรามีส่วนต่อประสานที่เรียกว่า IPayable
public interface IPayable
{
public Pay(double amount);
}
ตอนนี้เรามีคลาสคอนกรีตสองคลาสที่ใช้อินเตอร์เฟสนี้:
public class BusinessAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
public class CustomerAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
ตอนนี้ให้แกล้งเรามีคอลเลกชันของบัญชีต่าง ๆ การทำเช่นนี้เราจะใช้รายการทั่วไปของประเภท IPayable
List<IPayable> accountsToPay = new List<IPayable>();
accountsToPay.add(new CustomerAccount());
accountsToPay.add(new BusinessAccount());
ตอนนี้เราต้องการจ่าย $ 50.00 ให้กับบัญชีทั้งหมด:
foreach (IPayable account in accountsToPay)
{
account.Pay(50.00);
}
ดังนั้นตอนนี้คุณจะเห็นว่าอินเตอร์เฟสมีประโยชน์อย่างไม่น่าเชื่ออย่างไร
พวกเขาจะใช้กับวัตถุที่ยกตัวอย่างเท่านั้น ไม่ได้อยู่ในคลาสแบบคงที่
หากคุณชำระเงินแบบคงที่เมื่อวนลูปผ่าน IPayable ในบัญชี ToPay จะไม่มีวิธีการคิดออกว่าควรจะเรียกชำระเงินกับ BusinessAcount หรือ CustomerAccount