در برنامه program یک متغیر به نام payment داریم از نوع کلاس payment و internal
Payment payment;
if (bankName == "saman")
{
payment = samanPaymentFactory.CreatePayment(amount);
در کلاس NationalbankPaymentFactory باز هم یک متغیر از نوع پابلیک داریم از نوع کلاس NationalBankPayment
var payment = new NationalBankPayment();
payment.Amount = ammount;
return payment;
همچنین در کلاسfactory SamanBankPayment هم دوباره یک متغیر پابلیک از نوع کلاس داریم
var payment = new SamanBankPayment ();
payment.Amount = ammount;
return payment;
همچنین یک کلاس هم به نام payment از نوع پابلیک داریم
public abstract class Payment
{
public decimal Amount { get; set; }
public abstract string bank { get; }
}