옵저버 패턴(Observer Pattern)

장상희·2024년 12월 17일

옵저버 패턴

  • 옵저버 패턴은 객체의 상태 변화를 다른 객체에 알리는 방법을 정의 하는 디자인 패턴입니다.

  • 이패턴은 주로 서브젝트(Subject)와 옵저버(Observer)로 구성되며 주제가 상태가 변경되었을 때 관련된 옵저버들이 자동으로 그 변화를 통지받을 수 있도록 해줍니다.

  • 옵저버 패턴은 유연성과 확장성을 제공하지만, 남용하면 코드 분석이 어려워 질 수 있습니다.

옵저버 정의(Observer)

상태 변화를 감지하고 이에 따라 반응하는 객체

옵저버 구현

public void Updateobs()//메서드 생성
{
	Debug.Log($"Update {gameobject.name}");
	
}

테스트 코드

public class ObserverTesto: MonoBehaviour
{
	[SerializeField] Obs obs1;
	[SerializeField] Obs obs2:
	[SerializeField] Button button:
	Unity 메시지 | 참조 0void Start()
	{
	  button.onClick.AddListener(() =>//이버튼은 방금만든 메소드를 호출하는 간단한 코드
	  {
		obs1.Update0bs():
		obs2.Update0bs();
		});
	}
}

버튼 클릭시

위 코드 문제점

커플링이 심해진다

새로운 옵저버가 추가되면 코드가 강하게 커플되어있기 떄문에 코드 수정이 번번하게 일어날 것이다 이때문에 나중에 유지보수가 좋지 않다

옵저버 패턴 사용 이유

강력한 결합 (Tight Coupling)

ObserverTest0 클래스는 obs1, obs2를 직접 참조합니다. 따라서 새로운 옵저버가 추가되거나 제거 되면 원본 클래스(ObserverTest0)를 수정해야 합니다

profile
프로그래머 꿈나무

0개의 댓글