디자인패턴(java)

디자인패턴 - Facade 패턴

syppjava 2021. 9. 3. 14:31

Goal

facade 패턴을 알아보고 응용코드를 작성해보자

facade 패턴이란

복잡한 로직들을 하나의 클래스로 취합해서 외부에서 메소드 하나를 호출해 간단하게 로직을 실행 할 수 있는 디자인패턴

응용

게임 캐릭터가 스킬을 사용한다고 했을 때 수행해야 할 로직을 생각해보자.

- 마나가 있는지 체크한다.

- 스킬 강화 옵션을 적용한다.

- 스킬을 발사한다.

 

코드

캐릭터 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Character {
 
  private ManaCheckProcess manaCheckProcess;
 
  private SkillOptionProcess skillOptionProcess;
 
  private UsingSkillProcess usingSkillProcess;
 
  public Character(){
    manaCheckProcess = new ManaCheckProcess();
    skillOptionProcess = new SkillOptionProcess();
    usingSkillProcess = new UsingSkillProcess();
  }
 
  public void skill(){
 
    //마나 체크
    manaCheckProcess.manaCheck();
 
    //스킬 강화
    skillOptionProcess.strengthenSkills();
 
    //스킬 사용
    usingSkillProcess.usingSkill();
 
  }
 
}
cs

마나 체크 클래스

1
2
3
4
5
6
7
class ManaCheckProcess {
 
  public void manaCheck(){
    System.out.println("스킬을 사용 가능한지 마나 체크");
  }
 
}
 
cs

스킬 옵션 클래스

1
2
3
4
5
6
7
8
class SkillOptionProcess {
 
  public void strengthenSkills(){
    System.out.println("스킬 옵션 데미지 업");
  }
 
}
 
cs

스킬 사용 클래스

1
2
3
4
5
6
7
8
class UsingSkillProcess {
 
  public void usingSkill(){
    System.out.println("스킬 사용");
  }
 
}
 
cs

 

이제 스킬을 사용해보자

1
2
3
4
5
6
public static void main(String[] args) {
 
    Character character = new Character();
    character.skill();
 
}
cs

 

실행결과
스킬을 사용 가능한지 마나 체크
스킬 옵션 데미지 업
스킬 사용

 

마무리

위 코드는 간단하지만 복잡한 로직에 적용을 한다고 했을 때

한번의 호출로 모두 처리 할 수 있는 매력적인 패턴인것 같다.

 

Git : https://github.com/GS-34/design-pattern