728x90
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다.
팩토리 패턴(Factory pattern)
객체를 생성하는 디자인 패턴 중 하나이다.
객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정한다.
객체 생성의 책임을 팩토리 클래스로 위임함으로써 객체를 생성하는 코드의 유연성과 재사용성을 높일 수 있다.
장점
- 객체 생성의 책임을 팩토리 클래스에 위임하기 때문에 객체 생성 코드의 변경이나 유지보수가 쉬워진다.
- 팩토리 클래스에서 한 번 작성하면 모든 클래스에서 재사용할 수 있기 때문에 객체 생성 코드의 중복을 제거해준다.
- 상위 클래스는 인스턴스 생성 방식에 대해 알 필요가 없기 때문에 코드의 유연성이 높아진다.
자바에서의 팩토리 패턴
// 객체를 생성하는 인터페이스
public interface AnimalFactory {
Animal createAnimal();
}
// 객체 생성 인터페이스를 구현하는 클래스
public class DogFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
// 객체 생성 인터페이스를 구현하는 클래스
public class CatFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
// 객체
public interface Animal {
void makeSound();
}
// 객체를 구현하는 클래스
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("멍멍");
}
}
// 객체를 구현하는 클래스
public class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("야옹");
}
}
// 팩토리 패턴을 사용하는 클래스
public class Main {
public static void main(String[] args) {
AnimalFactory factory = new DogFactory();
Animal animal = factory.createAnimal();
animal.makeSound(); // 멍멍 출력
factory = new CatFactory();
animal = factory.createAnimal();
animal.makeSound(); // 야옹 출력
}
}
AnimalFactory 인터페이스를 구현하는 DogFactory와 CatFactory 클래스가 있고 Animal 인터페이스를 구현하는 Dog와 Cat 클래스가 있다.
Main 클래스에서 AnimalFactory 인터페이스의 구현체를 생성하고 createAnimal() 메서드를 호출하여 makeSound() 메서드를 호출하면 각 객체의 소리를 출력한다.
이렇게 팩토리 패턴을 사용하면 객체 생성과 사용을 분리할 수 있고, 유연하고 확장 가능한 코드를 작성할 수 있다.
728x90
'책' 카테고리의 다른 글
면접을 위한 CS 전공지식 노트 - 이터레이터 패턴 (0) | 2023.05.02 |
---|---|
면접을 위한 CS 전공지식 노트 - 프록시 패턴과 프록시 서버 (0) | 2023.05.02 |
면접을 위한 CS 전공지식 노트 - 싱글톤 패턴 (0) | 2023.04.21 |
면접을 위한 CS 전공지식 노트 - 시간 복잡도 (0) | 2023.04.18 |
Clean Code - 의미있는 이름 (0) | 2023.04.17 |