Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Factory-pattern for superclass and its subclasses

I have 3 classes which are one child of the other: Class C ->(subclass of)-> class B ->(subclass of)-> class A.

Every class is real and I want to choose which one to instantiate by a method. Can I use Factory-method and so factory-pattern to choose which class to create?

thank you.

like image 513
Marco Avatar asked Mar 28 '26 13:03

Marco


1 Answers

Yes, the factory method is the way to go in your context. I've provided quick example 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;
    }
}
like image 193
Krzysztof Błażełek Avatar answered Mar 30 '26 02:03

Krzysztof Błażełek



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!