팩토리 메서드 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 분리해 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴
public interface Car {
}
public class HyundiaCar implements Car {
public HyundiaCar() {
System.out.println("현대자동차");
}
}
public class KiaCar implements Car{
public KiaCar() {
System.out.println("기아자동차");
}
}
public class CarFactory {
public Car createCar(String type) {
Car car = null;
switch (type) {
case "HYUNDIA":
car = new HyundiaCar();
break;
case "KIA":
car = new KiaCar();
break;
}
return car;
}
}
추상 팩토리 패턴은 관련된 객체들을 생성하기 위한 통합 인터페이스를 제공하는 디자인 패턴입니다. 간단히 말하면, 이 패턴은 복수의 관련된 객체들을 만드는 공장 또는 팩토리를 정의하고 사용하는 것이 목적입니다.
public class Car {
private Door door;
private Wheel wheel;
public Car() {
}
public Door getDoor() {
return door;
}
public void setDoor(Door door) {
this.door = door;
}
public Wheel getWheel() {
return wheel;
}
public void setWheel(Wheel wheel) {
this.wheel = wheel;
}
}
public class HyundiaCar extends Car{
public HyundiaCar(){}
}
public interface CarFactory{
Car createCar();
}
public interface CarPartsFactory {
Door createDoor();
Wheel createWheel();
}
public class HyundiaCarPartsFactory implements CarPartsFactory {
@Override
public Door createDoor() {
return new HyundiaDoor();
}
@Override
public Wheel createWheel() {
return new HyundiaWheel();
}
}
public class HyundiaCarFactory implements CarFactory{
private CarPartsFactory carPartsFactory;
public HyundiaCarFactory(CarPartsFactory carPartsFactory) {
this.carPartsFactory = carPartsFactory;
}
@Override
public Car createCar() {
Car car = new HyundiaCar();
car.setDoor(carPartsFactory.createDoor());
car.setWheel(carPartsFactory.createWheel());
return car;
}
}
public class Client {
public static void main(String[] args) {
CarFactory hyundiaCarFactory = new HyundiaCarFactory(new HyundiaCarPartsFactory());
Car hyundiaCar = hyundiaCarFactory.createCar();
}
}
https://fvor001.tistory.com/63
https://velog.io/@papakang22/디자인패턴추상팩토리-패턴이란