Abstract Factory Pattern with Strategy pattern
- Manbodh ratre
- Jul 24, 2024
- 1 min read
public interface CarFactory {
Car createCar(String brandName);
}
public class IndianCarFactory implements CarFactory{
@Override
public Car createCar(String brandName) {
switch (brandName) {
case "TATA":
return new NanoCar();
case "MAHINDRA":
return new Thar();
default:
throw new IllegalArgumentException("Invalid brand name");
}
}
}
public class JapaniesCarFactory implements CarFactory{
@Override
public Car createCar(String brandName) {
if(brandName.equals("HUYNDAI")){
return new CretaCar();
}else{
throw new IllegalArgumentException("Invalid brand name");
}
}
}
public interface Car {
void printSpecification();
}
public class NanoCar implements Car{
@Override
public void printSpecification() {
System.out.println("this is a indian car nano");
}
}
public class CretaCar implements Car{
@Override
public void printSpecification() {
System.out.println("this is japanies car crete");
}
}
public class Thar implements Car{
@Override
public void printSpecification() {
System.out.println("this is indian car thar");
}
}
public class CarFactoryCreator {
private final CarFactory carFactory;
public CarFactoryCreator(CarFactory carFactory) {
this.carFactory = carFactory;
}
public CarFactory getCarFactory() {
return carFactory;
}
}
public class AbstractFactoryMain {
public static void main(String [] args){
CarFactoryCreator carFactoryCreator = new CarFactoryCreator(new IndianCarFactory());
CarFactory carFactory = carFactoryCreator.getCarFactory();
Car car = carFactory.createCar("TATA");
car.printSpecification();
}
}
output: this is a indian car nano







Comments