Friday, August 12, 2016

Factory Design pattern

problem Without Factory :
  • A lot new Keyword, need to add  a lot code in future.
  • Client know all the invoice type.


public interface IInvoice
{
    void print();

}    

public class InvoiceWithoutHeader : IInvoice
{
    public void print()
    {
        Console.WriteLine("Invoice Without Header");
    }
}

public class InvoiceWithHeader : IInvoice
{
    public void print()
    {
        Console.WriteLine("Invoice With Header");
    }
}

public class FactoryInvoice
{
      public static IInvoice GetInvoice(int invoiceType)
      {
        IInvoice result = null;

        switch (invoiceType)
        {
            case 1:
                result = new InvoiceWithHeader();
                break;
            case 2:
                result = new InvoiceWithoutHeader();
                break;
            default:
                break;
        }
        return result;
       }
}


static void Main(string[] args)
{
            IInvoice invoice;
            invoice = FactoryInvoice.GetInvoice(1);
            invoice.print();

            IInvoice invoice2;
            invoice2 = FactoryInvoice.GetInvoice(2);
            invoice2.print();

            Console.ReadLine();
}



No comments:

Post a Comment