Abstract Factory
Example - Animal factory
interface Animal {
String getName();
}
class Cat implements Animal {
private String name;
public Cat(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
class Dog implements Animal {
private String name;
public Dog(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
interface AnimalAbstractFactory {
Animal create();
}
class CatFactory implements AnimalAbstractFactory {
private String name;
public CatFactory(String name) {
this.name = name;
}
@Override
public Animal create() {
Cat cat = new Cat(name);
return cat;
}
}
class DogFactory implements AnimalAbstractFactory {
private String name;
public DogFactory(String name) {
this.name = name;
}
@Override
public Animal create() {
return new Dog(name);
}
}
class AnimalFactory {
public static Animal create(AnimalAbstractFactory factory) {
Animal animal = factory.create();
return animal;
}
}Last updated