디자인패턴(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