C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Factory: This class contains a get() method. It uses a switch statement to return a class based on an id number.
SwitchAnd: In the factory, derived types are returned. They are implicitly cast to the Position base class.
Main: We invoke the Factory.get() method. Get() is static so we need no Factory instance.
StaticJava program that uses Factory design pattern
abstract class Position {
public abstract String getTitle();
}
class Manager extends Position {
public String getTitle() {
return "Manager";
}
}
class Clerk extends Position {
public String getTitle() {
return "Clerk";
}
}
class Programmer extends Position {
public String getTitle() {
return "Programmer";
}
}
class Factory {
public static Position get(int id) {
// Return a Position object based on the id parameter.
// ... All these classes "extend" Position.
switch (id) {
case 0:
return new Manager();
case 1:
case 2:
return new Clerk();
case 3:
default:
return new Programmer();
}
}
}
public class Program {
public static void main(String[] args) {
for (int i = 0; i <= 3; i++) {
// Use Factory to get a Position for each id.
Position p = Factory.get(i);
// Display the results.
System.out.println("Where id = " + i + ", position = "
+ p.getTitle());
}
}
}
Output
Where id = 0, position = Manager
Where id = 1, position = Clerk
Where id = 2, position = Clerk
Where id = 3, position = Programmer