C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Get: This method takes a value and instantiate a class based on that value. It translates integers to objects with a switch statement.
SwitchAbstract: Because Manager, Clerk, and Programmer all derive from the same abstract class, the return type Position can be used.
Cast: An implicit cast automatically casts the Manager, Clerk and Programmer to Position references.
Main: We use the Get method with the values 0, 1, 2, and 3. We show that the appropriate type of class was instantiated for each integer.
C# program that uses factory pattern
using System;
class Program
{
abstract class Position
{
public abstract string Title { get; }
}
class Manager : Position
{
public override string Title
{
get
{
return "Manager";
}
}
}
class Clerk : Position
{
public override string Title
{
get
{
return "Clerk";
}
}
}
class Programmer : Position
{
public override string Title
{
get
{
return "Programmer";
}
}
}
static class Factory
{
/// <summary>
/// Decides which class to instantiate.
/// </summary>
public static Position Get(int id)
{
switch (id)
{
case 0:
return new Manager();
case 1:
case 2:
return new Clerk();
case 3:
default:
return new Programmer();
}
}
}
static void Main()
{
for (int i = 0; i <= 3; i++)
{
var position = Factory.Get(i);
Console.WriteLine("Where id = {0}, position = {1} ", i, position.Title);
}
}
}
Output
Where id = 0, position = Manager
Where id = 1, position = Clerk
Where id = 2, position = Clerk
Where id = 3, position = Programmer
Tip: You can use the Factory type to handle object creation in a uniform and concise way.