STUDY/디자인패턴12 Iterator 이터레이터 패턴 using UnityEngine;using System.Collections;using System.Collections.Generic;namespace _20240719 {// Iterator 인터페이스 public interface IIterator { bool HasNext(); T Next(); } // Iterable 인터페이스 public interface IIterable { IIterator GetIterator(); } // 구체적인 Iterable 클래스: 게임 레벨 public class GameLevel : IIterable { private List enemies = new Li.. 2024. 7. 19. Mediator 메디에이터 패턴 옵저버와 비슷하지만 각자 객체들이 서로 직접 소통하지 않도록 해서 객체 의존성을 줄여준다.using UnityEngine;using System.Collections.Generic;// Mediator 인터페이스public interface IChatMediator{ void SendMessage(string message, ChatMember sender); void AddMember(ChatMember member);}// Concrete Mediatorpublic class ChatRoom : IChatMediator{ private List members = new List(); public void AddMember(ChatMember member) { m.. 2024. 7. 19. Memento 메멘토 패턴 ★ 상태를 보관해놨다가 롤백할 때 사용. 커맨드 패턴과 섞어서 자주 사용한다.(커맨드 패턴이 안쓰면 잘 쓸일이 없다....) 메멘토 : 단순하게 내 상태를 저장할 수 있는 커맨드 패턴과 매우 유사하다.변한 변수를 넣어놨다가 필요할 때 되돌리기 데이터를 변환한 다음에 변환된 상태를 저장해놓고, 예전으로 돌아가고싶을 때 초기상태로 다시 돌아간다. 스택의 Peek은 스택 맨 위에 있는 데이터를 말한다.using UnityEngine;using System.Collections.Generic;// Memento 클래스: 플레이어의 상태를 저장public class Player_1Memento{ public Vector3 Position { get; private set; } public int Healt.. 2024. 7. 19. Strategy 전략 패턴 모든 아이들이 인터페이스 하나를 상속받게 되어서 각자 상속받은 인터페이스의 메소드를 다른 방식으로 구현하도록 함.추상팩토리/팩토리메서드 패턴과 결합해 사용한다고 생각해도됨. FSM 쓰면 이건 안써도됨. 간단하게 만드는 경우에는 전략패턴을 사용하면 스테이트머신을 안만들어도 되어서 그럴때 전략패턴을 사용함using System.Collections.Generic;using UnityEngine;// 옵저버 인터페이스public interface IObserver{ void OnNotify(string message);}// 주체(Subject) 클래스public class Subject : MonoBehaviour{ private List observers = new List(); /.. 2024. 7. 19. Observer 옵저버 패턴 ★★★ 내가 상태가 바뀌었을 때 이를 알아야 할 객체들에게 내 상태를 뿌려준다.옵저버 패턴으로 Action이나 델리게이트를 조금 더 명확하게 만들었다고 할 수 있다.라이브러리 사용은 생산성을 높여주지만 라이브러리에 대한 코드 장악력이 없으면 리스크가 발생할 수 있다.그런데 옵저버 패턴은 델리게이트보다 내부 코드를 관리하기 용이하기 때문에 코드장악력이 높아진다.때문에 옵저버안에 델리게이트를 넣어서 사용하기도 한다.옵저버 패턴은 서버 만들 때 많이 사용한다. using System.Collections.Generic;using UnityEngine;// 옵저버 인터페이스public interface IObserver{ void OnNotify(string message);}// 주체(Subject) 클래스p.. 2024. 7. 19. 이전 1 2 3 다음