퍼사드 패턴

반응형
반응형

퍼사드는 사실 불어다.
건물 외각이라는 뜻을 가졌다.

퀴즈를 하나 낼 태니 한번 맞춰보시길

이 회사에는 현재 몇명의 개발자가 일하고 있는가? (어디든 앉아서 일하고 있는 사람만)
이 회사는 어떤 회사일까?

첫 번째 질문 같은 경우는
즉, 화장실에 갔던가 휴가 중인 인원 등을 제외하라는 뜻이다.
아마 100%확률로 틀릴 것이다. 심지어 이 회사를 다니고 있는 사람들 모두 이 문제를 틀릴 것이다.
왜냐하면 화장실를 간 사람들을 일일이 세면서 이 문제를 맞출 이유는 없기 때문이다.
아니 애초에 말도 안되는 문제이기 때문이다. 어떻게 외각만을 보고 문제를 맞춘다는 건 말이 되지 않기 때문이다.

하지만 두 번째 질문은 대답이 가능하다.

이런식으로 외부 코드만 확인해서 외부 코드만 보고서
어떤 동작을 하는지 대략적을 짐작할 수 있게 하는 패턴이다.

즉, 내부 구현이 어떻게 되었든지 알 필요가 없다는 뜻이다.
외부 코드만 가지고도 충분히 뭔가를 할 수 있다는 뜻이 아닐까 생각이 든다.

사실 코드는 별거 없다. 왜냐하면 인터페이스를 이용해서 구분하지 않았기 때문이다.

이렇게 작성하고

public class Company {
  private String name;
  private String role;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getRole() {
    return role;
  }

  public void setRole(String role) {
    this.role = role;
  }
}

놀랍게도 클라이언트는 이게 전부다.

Company company = new Company();
company.setName("회사1");
company.setRole("IT");

String result = company.toString();
System.out.println(result);

이렇게 작성해보면 사실 별거 없다.
이게 전부이고

물론 실제로는 이렇게 만들지는 않는다. 
인터페이스를 이용해서 추상화를 이용한다.

과거에 브릿지, 어뎁터와 굉장히 유사하다고 생각했는데 지금 생각해보니
아닌것 같다.

내가 이렇게 퍼사드를 소개하는 이유는 많은 글에서 퍼사드 패턴에서 인터페이스를 만들고 설명하고 있다.
근데 그렇게 되면 퍼사드 패턴을 사용하려면 인터페이스를 사용해야 된다는 강박관념이 생길 것 같다고 생각했다.
어찌 되었든 코드가 중요한게 아니라 의도가 중요하기 때문에

내 생각에는 이것도 퍼사드라 생각이 든다.
물론 아니라고 해도 난 할말이 없다.

'디자인패턴' 카테고리의 다른 글

템플릿 메소드 패턴  (0) 2022.03.19
퍼사드 패턴  (0) 2021.12.05
브릿지 패턴  (0) 2021.11.25
전략 패턴  (0) 2021.11.19
팩토리 메소드 패턴 vs 추상 팩토리 패턴  (0) 2021.11.11
싱글톤 패턴  (0) 2021.11.03

댓글(0)

Designed by JB FACTORY