Skip to main content

Abstract Factory Pattern

ABSTRACT FACTORY PATTERN

          Provide an interface for creating families of related or dependent objects without specifying their
concrete classes.


                         Casual Implementation                             Factory Pattern Implementation
 Usual Code Block
 Factory Pattern

Parent Class

public class CheckBook
{
    protected decimal _Amount;
    public decimal getExpense()
    {
      return _Amount;
    }
}

These below child classes is derived from CheckBook base class.

public class Health : CheckBook
{
    public Health()
    {
        _Amount = 5000;//Could be any logic to calculate health amount
        Console.WriteLine("Your Health Expense: {0}", _Amount.ToString());
    }
}
public class Travel : CheckBook
{
    public Travel()
    {
        _Amount = 10000;//Could be any logic to calculate travel amount
        Console.WriteLine("Your Travel Expense: {0}", _Amount.ToString());
    }
}

public class Personal : CheckBook
{
    public Personal()
    {
        _Amount = 15000;//Could be any logic to calculate personal amount
        Console.WriteLine("Your Personal Expense: {0}", _Amount.ToString());
    }
}
public class CheckFactory
{
    public CheckFactory() { }

    public CheckBook chooseExpense(int o)
    {
        switch (o)
        {
            case 1:
                return new Personal();
            case 2:
                return new Travel();
            default:
                return new Health();
        }
    }
}




class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();
        CheckFactory objCheckFactory = new CheckFactory();
        CheckBook currentExpense = objCheckFactory.chooseExpense(int.Parse(input));
        Console.WriteLine("From main class " + currentExpense.getExpense());
        Console.Read();
    }
}

Comments

Popular posts from this blog

Difference between NPM and NPX

NPM Vs NPX npm  - Javascript package manager npx  - Execute npm package binaries https://docs.npmjs.com/files/folders#executables If you use  npm 5.1 or earlier , you can't use npx. Instead, install create-react-app globally: npm install -g create-react-app Now you can run: create-react-app my-app NPM: One might install a package locally on a certain project: npm install some - package Now let's say you want NodeJS to execute that package from the command line: $ some - package The above will  fail . Only  globally installed  packages can be executed by typing their name  only . To fix this, and have it run, you must type the local path: $ ./ node_modules /. bin / some - package You can technically run a locally installed package by editing your  packages.json  file and adding that package in the  scripts  section: { "name" : "whatever" , "version" : "1.0.0" , "scripts" : { ...

Asp.Net MVC Life Cycle

MVC Life Cycle: 1. Routing -         Routing is the first step in ASP.NET MVC pipeline. Typically, it is a pattern matching system that matches the incoming request to the registered URL patterns in the Route Table. The UrlRoutingModule(System.Web.Routing.UrlRoutingModule) is a class which matches an incoming HTTP request to a registered route pattern in the RouteTable(System.Web.Routing.RouteTable). 2.Controller Initialization -        The MvcHandler initiates the real processing inside ASP.NET MVC pipeline by using ProcessRequest method. This method uses the IControllerFactory instance (default is System.Web.Mvc.DefaultControllerFactory) to create corresponding controller. 3. Action Execution – Action execution occurs in the following steps:        When the controller is initialized, the controller calls its own InvokeAction() method by passing the details of the chosen action method. This is han...

Books To Refer

1. C#   in Depth ,  Third   Edition : Foreword   by Eric   Lippert        By:  Jon Skeet    Publication Date:  16-SEP-2013 2. Learning jQuery - Fourth Edition     B y:  Jonathan Chaffer; Karl Swedberg     Pub. Date:  June 25, 2013      3.Beginning JSON                    By:  Ben Smith     Publication Date:  04-MAR-2014 4. Responsive Web Design with jQuery     By:  Gilberto Crespo      Pub. Date:  November 25, 2013 5. Developing Responsive Web Applications with AJAX and jQuery       By:  Sandeep Kumar Patel  P ub. Date:  July 25, 2014 6. Dependency Injection in .NET     by  Mark Seemann