'자바 디자인'에 해당되는 글 1건

- 추상 팩토리 패턴 (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
블로그 이미지

미나미나미

,