전략패턴(strategy pattern) - 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴.
인터페이스 - 사람과 컴퓨터를 연결하는 장치
- 기능에 대한 선언과 구현 분리
- 기능을 사용할 수 있는 통로
델리게이트 - 위임하다.
인터페이스
1
2
3
|
public interface IWeapon {
void Attack();
}
| cs |
Interface Implements1
1
2
3
4
5
6
7
8
9
10
11
12
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Axe : MonoBehaviour , IWeapon{
public void Attack()
{
Debug.Log("Attack Axe");
}
}
| cs |
Interface Implements2
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sword : MonoBehaviour, IWeapon
{
public void Attack()
{
Debug.Log("Attack Sword");
}
}
| cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Knife : MonoBehaviour, IWeapon
{
public void Attack()
{
Debug.Log("Attack Knife");
}
}
| cs |
Character
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
29
30
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character : MonoBehaviour {
// 접근점
private IWeapon weapon;
// 교환 기능
public void SetWeapon(IWeapon weapon)
{
this.weapon = weapon;
}
public void Attack()
{
if(weapon == null)
{
Debug.Log("맨손 공격");
}
else
{
// 델리게이트
weapon.Attack();
}
}
}
| cs |
Main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Main : MonoBehaviour {
// Use this for initialization
void Start () {
Character cha = new Character();
cha.Attack();
cha.SetWeapon(new Knife());
cha.Attack();
cha.SetWeapon(new Sword());
cha.Attack();
cha.SetWeapon(new Axe());
cha.Attack();
}
}
| cs |
결과
공부 : 인프런 - 자바 디자인 패턴의 이해 _ Gof Design Pattern
댓글
댓글 쓰기