728x90
😀추상 팩토리 패턴
팩토리 메서드 패턴과 비슷해보이지만, 명확한 차이점이 있다.
- 팩토리 메서드 패턴 : 조건에 따른 객체 생성을 팩토리클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴.
- 추상 팩토리 패턴 : 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고,
이를 팩토리조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴
😀코드로 알아보기
ComputerFactory.java
package study.abstractFactoryPattern.code0;
public interface ComputerFactory {
void createKeyboard();
void createMouse();
}
LgComputer.java
package study.abstractFactoryPattern.code0;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LgComputer implements ComputerFactory {
@Override
public void createKeyboard() {
log.info("LG keyboard");
}
@Override
public void createMouse() {
log.info("LG mouse");
}
}
SamsungComputer.java
package study.abstractFactoryPattern.code0;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SamsungComputer implements ComputerFactory{
@Override
public void createKeyboard() {
log.info("SAMSUNG keyboard");
}
@Override
public void createMouse() {
log.info("SAMSUNG mouse");
}
}
FactoryOfCOmputerFactory.java
package study.abstractFactoryPattern.code0;
public class FactoryOfComputerFactory {
public FactoryOfComputerFactory(String type){
ComputerFactory computerFactory = null;
switch (type){
case "LG" :
computerFactory = new LgComputer();
break;
case "SAMSUNG" :
computerFactory = new SamsungComputer();
break;
}
computerFactory.createKeyboard();
computerFactory.createMouse();
}
}
AbstractFactoryPatternTest.java
package study.abstractFactoryPattern;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import study.abstractFactoryPattern.code0.FactoryOfComputerFactory;
@Slf4j
public class AbstractFactoryPatternTest {
@Test
void code0test(){
FactoryOfComputerFactory factoryOfComputerFactory = new FactoryOfComputerFactory("LG");
}
}
'DESIGN PATTERN' 카테고리의 다른 글
[디자인패턴] 템플릿 메소드 패턴(template Method Pattern) 이란? - 개발자 배찌 (0) | 2022.04.15 |
---|---|
[디자인패턴] 싱글톤패턴(singleton Pattern) 이란? (+static) - 개발자 배찌 (0) | 2022.04.14 |
[디자인패턴] 팩토리 메서드 패턴(Factory Method Pattern) 이란? - 개발자 배찌 (0) | 2022.04.12 |
[디자인패턴] 전략패턴 (strategy Pattern)이란? - 개발자 배찌 (0) | 2022.04.12 |
[디자인패턴] 어댑터 패턴(Adapter Pattern)이란? - 개발자 배찌 (0) | 2022.04.11 |