- 추상 팩토리 패턴 (Abstract facotory pattern)
다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다.
( # 출처 : 위키 백과 https://ko.wikipedia.org/wiki/%EC%B6%94%EC%83%81_%ED%8C%A9%ED%86%A0%EB%A6%AC_%ED%8C%A8%ED%84%B4 )
- 추상화 팩토리 패턴 구현 예제
(# 전체소스 코드 : https://github.com/HelloPlutoKid/JAVADesignPattern/tree/master/AbstractFactoryPattern)
조립 컴퓨터 판매 회사를 추상화 팩토리 패턴으로 구현.
간단한 예제임으로 컴퓨터 부품은 CPU , GPU , Memory만 고려함.
컴퓨터의 부품이 되는 부분을 구현 후, 컴퓨터를 만든다.
부품 종류
CPU 종류 : High CPU , Mid CPU , LOW CPU
GPU 종류 : useGPU , notUseGPU,
Memoery 종류 : 4GB , 8GB, 16GB
컴퓨터 종류
ComputerA 스펙 : Mid Cpu, notUseGpu, SixTeenGB
ComputerB 스펙 : High Cpu, UseGpu, EightGB
ComputerC 스펙 : Low Cpu, notUseGpu, FourGB
예시. 컴퓨터 A
1. CPU, GPU, Memory 구성 부품 만들기
예를 들어서, High Cpu를 보면, Interface ICpu를 HighCpu에서 인터페이스를 구현한다.
package Inter;
/**
* ICpu
*/
public interface ICpu {
public void cpuInfo();
}
package cpu;
import Inter.ICpu;
/**
* HighCpu
*/
public class HighCpu implements ICpu{
@Override
public void cpuInfo() {
System.out.println("High performance CPU");
}
}
2. 컴퓨터 리스트 만들기
예를 들어서, ComputerA를 보면, Interface IComputerFactory를 ComputerA에서 인터페이스를 구현한다.
package Inter;
/**
* IPlayer
*/
public interface IComputerFactory {
public ICpu cpu();
public IGpu gpu();
public IMemory memory();
}
import Inter.IComputerFactory;
import Inter.ICpu;
import Inter.IGpu;
import Inter.IMemory;
import cpu.MidCpu;
import gpu.notUseGpu;
import memory.SixTeenGB;
/**
* ComputerA
*/
public class ComputerA implements IComputerFactory{
@Override
public ICpu cpu() {
return new MidCpu();
}
@Override
public IGpu gpu() {
return new notUseGpu();
}
@Override
public IMemory memory() {
return new SixTeenGB();
}
}
3. 메인 부분
import Inter.IComputerFactory;
import Inter.ICpu;
import Inter.IGpu;
import Inter.IMemory;
import computerList.ComputerA;
import computerList.ComputerB;
import computerList.ComputerC;
public class Main {
public static void main(String[] args) {
IComputerFactory computer = new ComputerA();
ICpu cpu = computer.cpu();
IGpu gpu = computer.gpu();
IMemory memory = computer.memory();
System.out.println("=======================");
System.out.println("COMPUTER A SPEC");
cpu.cpuInfo();
gpu.gpuInfo();
memory.memoryInfo();
System.out.println("=======================");
computer = new ComputerB();
cpu = computer.cpu();
gpu = computer.gpu();
memory = computer.memory();
System.out.println("=======================");
System.out.println("COMPUTER B SPEC");
cpu.cpuInfo();
gpu.gpuInfo();
memory.memoryInfo();
System.out.println("=======================");
computer = new ComputerC();
cpu = computer.cpu();
gpu = computer.gpu();
memory = computer.memory();
System.out.println("=======================");
System.out.println("COMPUTER C SPEC");
cpu.cpuInfo();
gpu.gpuInfo();
memory.memoryInfo();
System.out.println("=======================");
}
}
4. 결과화면
'[java] > [디자인패턴]' 카테고리의 다른 글
[Java] Builder 패턴 (0) | 2019.12.24 |
---|