top of page

Abstract Factory Pattern with Strategy pattern

ree



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

Recent Posts

See All

Comments


Call 

7869617359

Email 

Follow

  • Facebook
  • Twitter
  • LinkedIn
  • Instagram
Never Miss a Post. Subscribe Now!

Thanks for submitting!

bottom of page