interface IInvoiceProcessor
void ProcessInvoice(decimal amount);
class DomesticInvoiceProcessor: IInvoiceProcessor
public void ProcessInvoice(decimal amount)
Console.WriteLine($"国内請求処理: {amount} 円");
class InternationalInvoiceProcessor: IInvoiceProcessor
public void ProcessInvoice(decimal amount)
Console.WriteLine($"国外請求処理: {amount} 円");
private IInvoiceProcessor _invoiceProcessor;
public AccountingSystem(IInvoiceProcessor invoiceProcessor)
_invoiceProcessor = invoiceProcessor;
_invoiceProcessor.ProcessInvoice(10000);
IInvoiceProcessor domesticInvoiceProcessor = new DomesticInvoiceProcessor();
AccountingSystem domesticsystem = new AccountingSystem(domesticInvoiceProcessor);
IInvoiceProcessor internationalInvoiceProcessor = new InternationalInvoiceProcessor();
AccountingSystem internationalsystem = new AccountingSystem(internationalInvoiceProcessor);
internationalsystem.Run();