Factory Pattern - The Basic

Factory Pattern is a Creational Pattern. If you want to create a database independent application then you can use Factory Pattern. My Previous Post I publish Builder Pattern. Factory Pattern & Builder Pattern has sometime create confustion. In Factory an extra class is required which is responsible to create object base on parater. Client directly request the class to give a specific type of object. The code example is here.



namespace TestConsole
{
class Program
{
static void Main(string[] args)
{
string p = Console.ReadLine();
Creator obj = new Creator();
ICar car = obj.Factory(p);
Console.WriteLine(car.CreateCar());
Console.ReadKey();
}
}
class Creator
{
public ICar Factory(string prm)
{
ICar car = null;
if (prm.ToUpper() == "S")
{
car = new Suzuki();
}
else
{
car = new Marcidise();
}
return car;
}

}

interface ICar
{
string CreateCar();
}

class Suzuki : ICar
{
public string CreateCar()
{
return "Suzuki";
}
}

class Marcidise :ICar
{
public string CreateCar()
{
return "Marcidise";
}
}

}

Builder Pattern - The Basic with example

Builder pattern is a creational Pattern. If you use Builder pattern then we can capable to make our application more extensible & loosely couple. In builder paatern 1 extrac class Director and 1 extra interface IBuilder is required. Client create Director object and create IBuilder type object conditionally and pass this object to Director object. Director object call Builder objects method for required operation. I show a code example. This is for very beginers who wants to learn builder desing pattern. Please see the code and write that code on your test project. Then you can easily understand.

namespace TestConsole
{


class Program
{
static void Main(string[] args)
{
string carName = Console.ReadLine();
Director direct = new Director();
ICarBuilder car = null;
if (carName.ToUpper() == "SUZUKI")
{
car = new Suzuki();
}
else if (carName.ToUpper() == "MARCIDISE")
{
car = new Marcidise();
}
direct.ConstructCar(car);
Console.ReadKey();
}
}


interface ICarBuilder
{
void CreateCar();
}
class Suzuki : ICarBuilder
{
public void CreateCar()
{
Console.WriteLine("Suzuki Card is Created. Thanks for Bye Suzuki.");
}
}

class Marcidise :ICarBuilder
{
public void CreateCar()
{
Console.WriteLine("Marcidesce car is created. You will becode proude for using Marcidise");
}
}


class Director
{
public void ConstructCar(ICarBuilder builder)
{
builder.CreateCar();
}
}


}