Step1: Create a console project in visual studio
step2: create a class Dream and replace the class with the following code.
Story:
//One rich guy has 4 kinds of vehicles, He has an habit riding in dream, He chooses one vehicle among those he own and goes for night ride.
When?
//When to go for Factory Design pattern ?
//Ans:
// If you want to create an object at run time dynamically based on some flag
// The creation of object is done when it is required.
// create object without exposing the creation logic.
/// <summary>
/// When to use Factory Pattern
///
/// Subclasses figure out what objects should be created.
/// Parent class allows later instantiation to subclasses means the creation of object is done when it is required.
/// The process of objects creation is required to centralize within the application.
/// class (creator) will not know what classes it will be required to create.
/// </summary>
///
How?
Method1: Implement the above scenario without any factory.
class BiCycle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 20 kmph");
describeBicycle();
}
public void describeBicycle()
{
Console.WriteLine("bicycle has handle and breaks to control speed");
}
}
class Scooter
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 80 kmph");
describeScooter();
}
public void describeScooter()
{
Console.WriteLine("Scooter has handle , breaks, Gear system to control speed");
}
}
class Car
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 100 kmph");
describeCar();
}
public void describeCar()
{
Console.WriteLine("Car has Steering , breaks, Gear system to control speed");
}
}
class Helicopter
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 150 kmph");
describeCopter();
}
public void describeCopter()
{
Console.WriteLine("Copter has Steering , cookpit voice control,GPS , Gear system to control speed");
}
}
class Dream
{
static void Main()
{
Console.WriteLine("He is dreeming... and choose a vehicle....");
string choosenVehicle = Console.ReadLine();
if (choosenVehicle == "b")
{
var b = new BiCycle();
b.RideVehicle();
}
else if (choosenVehicle == "s")
{
var s = new Scooter();
s.RideVehicle();
}
else if (choosenVehicle == "c")
{
var c = new Car();
c.RideVehicle();
}
else if (choosenVehicle == "h")
{
var h = new Helicopter();
h.RideVehicle();
}
}
}
//Method2: Implement the same with factory pattern
public interface IVehicle
{
void RideVehicle();
}
class BiCycle : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 20 kmph");
describeBicycle();
}
public void describeBicycle()
{
Console.WriteLine("bicycle has handle and breaks to control speed");
}
}
class Scooter : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 80 kmph");
describeScooter();
}
public void describeScooter()
{
Console.WriteLine("Scooter has handle , breaks, Gear system to control speed");
}
}
class Car : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 100 kmph");
describeCar();
}
public void describeCar()
{
Console.WriteLine("Car has Steering , breaks, Gear system to control speed");
}
}
class Helicopter : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 150 kmph");
describeCopter();
}
public void describeCopter()
{
Console.WriteLine("Copter has Steering , cookpit voice control,GPS , Gear system to control speed");
}
}
public class DecideVehicle
{
private IVehicle vehicle;
public IVehicle DreemVehicle(string vName)
{
switch (vName)
{
case "b":
vehicle = new BiCycle();
break;
case "s":
vehicle = new Scooter();
break;
case "c":
vehicle = new Car();
break;
case "h":
vehicle = new Helicopter();
break;
default:
vehicle = new Scooter();
break;
}
return vehicle;
}
}
class Dream
{
static void Main()
{
DecideVehicle decideVehicle = new DecideVehicle();
int contine = 0;
do
{
Console.WriteLine("He is dreeming... and choose a vehicle....");
string choosenVehicle = Console.ReadLine();
IVehicle vehicle;
vehicle = decideVehicle.DreemVehicle(choosenVehicle);
vehicle.RideVehicle();
Console.WriteLine("Do you want to continue ride press 1 then ?");
contine = int.Parse(Console.ReadLine());
} while (contine == 1);
}
}
I hope this is usefull....
step2: create a class Dream and replace the class with the following code.
Story:
//One rich guy has 4 kinds of vehicles, He has an habit riding in dream, He chooses one vehicle among those he own and goes for night ride.
When?
//When to go for Factory Design pattern ?
//Ans:
// If you want to create an object at run time dynamically based on some flag
// The creation of object is done when it is required.
// create object without exposing the creation logic.
/// <summary>
/// When to use Factory Pattern
///
/// Subclasses figure out what objects should be created.
/// Parent class allows later instantiation to subclasses means the creation of object is done when it is required.
/// The process of objects creation is required to centralize within the application.
/// class (creator) will not know what classes it will be required to create.
/// </summary>
///
How?
Method1: Implement the above scenario without any factory.
class BiCycle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 20 kmph");
describeBicycle();
}
public void describeBicycle()
{
Console.WriteLine("bicycle has handle and breaks to control speed");
}
}
class Scooter
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 80 kmph");
describeScooter();
}
public void describeScooter()
{
Console.WriteLine("Scooter has handle , breaks, Gear system to control speed");
}
}
class Car
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 100 kmph");
describeCar();
}
public void describeCar()
{
Console.WriteLine("Car has Steering , breaks, Gear system to control speed");
}
}
class Helicopter
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 150 kmph");
describeCopter();
}
public void describeCopter()
{
Console.WriteLine("Copter has Steering , cookpit voice control,GPS , Gear system to control speed");
}
}
class Dream
{
static void Main()
{
Console.WriteLine("He is dreeming... and choose a vehicle....");
string choosenVehicle = Console.ReadLine();
if (choosenVehicle == "b")
{
var b = new BiCycle();
b.RideVehicle();
}
else if (choosenVehicle == "s")
{
var s = new Scooter();
s.RideVehicle();
}
else if (choosenVehicle == "c")
{
var c = new Car();
c.RideVehicle();
}
else if (choosenVehicle == "h")
{
var h = new Helicopter();
h.RideVehicle();
}
}
}
//Method2: Implement the same with factory pattern
public interface IVehicle
{
void RideVehicle();
}
class BiCycle : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 20 kmph");
describeBicycle();
}
public void describeBicycle()
{
Console.WriteLine("bicycle has handle and breaks to control speed");
}
}
class Scooter : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 80 kmph");
describeScooter();
}
public void describeScooter()
{
Console.WriteLine("Scooter has handle , breaks, Gear system to control speed");
}
}
class Car : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 100 kmph");
describeCar();
}
public void describeCar()
{
Console.WriteLine("Car has Steering , breaks, Gear system to control speed");
}
}
class Helicopter : IVehicle
{
public void RideVehicle()
{
Console.WriteLine("Ride Bicycle at 150 kmph");
describeCopter();
}
public void describeCopter()
{
Console.WriteLine("Copter has Steering , cookpit voice control,GPS , Gear system to control speed");
}
}
public class DecideVehicle
{
private IVehicle vehicle;
public IVehicle DreemVehicle(string vName)
{
switch (vName)
{
case "b":
vehicle = new BiCycle();
break;
case "s":
vehicle = new Scooter();
break;
case "c":
vehicle = new Car();
break;
case "h":
vehicle = new Helicopter();
break;
default:
vehicle = new Scooter();
break;
}
return vehicle;
}
}
class Dream
{
static void Main()
{
DecideVehicle decideVehicle = new DecideVehicle();
int contine = 0;
do
{
Console.WriteLine("He is dreeming... and choose a vehicle....");
string choosenVehicle = Console.ReadLine();
IVehicle vehicle;
vehicle = decideVehicle.DreemVehicle(choosenVehicle);
vehicle.RideVehicle();
Console.WriteLine("Do you want to continue ride press 1 then ?");
contine = int.Parse(Console.ReadLine());
} while (contine == 1);
}
}
I hope this is usefull....
