mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
368 자
1 분
퍼사드 패턴 (Facade Pattern)
2021-01-12

퍼사드 패턴(Facade Pattern)#

퍼사드 패턴(Facade Pattern)에 대해서 알아봅시다.

개요#

퍼사드 패턴을 적용하면 클라이언트(사용자) 에게 복잡한 서브 시스템들을 숨기고 퍼사드에 대한 의존만 줌으로써 클라이언트에게 편리를 제공합니다. 퍼사드가 적용된 부분에는 서브 시스템들의 의존이 그대로 모두 포함됩니다만, 이렇게 래핑함으로써 클라이언트가 포장된 API 만 알아도 간단히 사용할 수 있게됩니다.

한 줄 요약 클라이언트에게 구체적인 부분을 숨기자. 클라이언트의 코드에서 의존성을 최소화 시켜보자.

img.png

장점#

퍼사드 제공자가 복잡한 시스템을 의도적으로 감추었기 때문에 사용자는 여러 서브 시스템들에 대한 이해도가 높지 않아도 기능을 사용할 수 있습니다. 퍼사드로 기존 시스템을 감싸면서 기존 기능을 사용하는데에 더 명확한 메서드를 제공할 수 있으며, 필요한 값만을 요구할 수 있게됩니다.

물론, 감춘 만큼 퍼사드 API 를 잘 정리하고 이에 대한 사용 방법, 명세 등을 제공해야하겠습니다.

예제 코드#

import java.util.Date;
import java.util.Random;
import java.util.UUID;
public class Main {
public static void main(String[] args) {
CodeRunnerFacade facade = new CodeRunnerFacade();
facade.runCode("this is code");
}
}
class CodeRunnerFacade{
Container container;
String generatedId = UUID.randomUUID().toString();
CodeRunnerFacade(){
container = new Container(new Runner(), generatedId);
}
public String runCode(String code){
if(container.checkContainerId(generatedId)){
return container.entryPoint(code);
}
throw new RuntimeException("존재하지 않는 컨테이너");
}
}
class Runner{
String run(String code) {
System.out.println("코드가 실행되었습니다. " + code);
return "ok";
}
}
class Container{
Runner runner;
String containerId;
Container(Runner runner, String containerId){
this.runner = runner;
this.containerId = containerId;
}
boolean checkContainerId(String token){
return token.equals(containerId);
}
String entryPoint(String code){
return runner.run(code);
}
}
공유하기

이 글이 도움이 되었다면 더 많은 분들께 공유해 주세요!

퍼사드 패턴 (Facade Pattern)
https://nirobase.me/posts/210112-facade-pattern/
작성자
니로
게시일
2021-01-12
라이선스
CC BY-NC-SA 4.0

일부 정보가 오래되었을 수 있습니다

목차