Ssssong += Dev

[디자인패턴/C#] 전략 디자인패턴 본문

개발/공부

[디자인패턴/C#] 전략 디자인패턴

ssong_dev 2022. 6. 20. 14:40

전략 디자인 패턴 다이어그램으로 그려보았다.

 

 

public class Teacher : MonoBehaviour
{
    public string teacherName;
    public string subject;
    public ILessonStrategy lessonStrategy;

    public void SetInfo(ILessonStrategy strategy, string name, string subject)
    {
        this.lessonStrategy = strategy;
        this.teacherName = name;
        this.subject = subject;
    }

    public virtual void Study()
    {
        Debug.Log(lessonStrategy.Lesson() + subject + "수업");
    }
}


//전략을 추가
public interface ILessonStrategy
{
    string Lesson();
}

public class KindLessonStrategy : ILessonStrategy
{
    public string Lesson()
    {
        return "친절한";
    }
}

public class StrictLessonStrategy : ILessonStrategy
{
    public string Lesson()
    {
        return "엄격한";
    }
}


public class TeacherManager : MonoBehaviour
{
    private void Start()
    {
        Teacher teacherA = new Teacher();
        teacherA.SetInfo(new KindLessonStrategy(), "선생님", "프로그래밍");
    } 
}

인터페이스를 통해 전략 클래스를 생성하여 사용하는 디자인 패턴이다.

전략끼리 묶어서 사용할 수 있으므로 개방폐쇄 원칙에 더 잘 맞고

상속 클래스를 계속 늘려나가지 않아도 된다. 

 

보스몬스터 패턴... 등으로 응용 가능하다.

'개발 > 공부' 카테고리의 다른 글

[디자인패턴/C#] 옵저버 패턴, 템플릿 메서드  (0) 2022.06.21
[C#] EventHandler  (0) 2022.06.21
[C#] 람다식  (0) 2022.06.20
[유니티] 실행 함수 순서 정하기  (0) 2022.06.18
[C#] 델리게이트(delegate)  (0) 2022.06.17