The factory pattern for the parent class and its subclasses… here is a solution to the problem.
The factory pattern for the parent class and its subclasses
I have 3 classes and they are subclasses of another:
Class C – > (subclass) – > Class B – > (subclass) – > Class A.
Each class is real, and I want to choose which class to instantiate by method.
Can I use factory methods and factory patterns to select classes to create?
Thank you.
Solution
Yes, the factory method is a viable approach in your context. I’ve provided a quick example of how to implement it.
import java.util.Scanner;
public class FactoryMethodExample
{
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
System.out.println("Enter a letter A, B or C: ");
String input = reader.nextLine();
Factory factory = new ConcreteFactory();
A myClass = factory.getClass(input.charAt(0));
if(myClass != null)
{
myClass.print();
}
else
{
System.out.print("Wrong input");
}
}
}
class A
{
public void print()
{
System.out.print("I'm class A");
}
}
class B extends A
{
@Override
public void print()
{
System.out.print("I'm class B");
}
}
class C extends B
{
@Override
public void print()
{
System.out.print("I'm class C");
}
}
abstract class Factory
{
public abstract A getClass(Character letter);
}
class ConcreteFactory extends Factory
{
@Override
public A getClass(Character letter)
{
if(letter.equals('A'))
{
return new A();
}
else if(letter.equals('B'))
{
return new B();
}
else if(letter.equals('C'))
{
return new C();
}
return null;
}
}