SRP : Single Responsibility Principle(단일 책임 원칙)

단일 책임 원칙(SRP)는 <객체는 단 하나의 책임만 가져야 한다> 는 원칙을 말한다.

 

여기서 '책임'이라는 의미는 하나의 '기능 담당'으로 보면된다.

하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행하는데 집중되어야 한다

 

 

현재 TopDownGame 프로젝트 수업을 듣는 중에 캐릭터의 이동을 담당하는 설계를 하는 중에 로직 순서를 간단하게라도 정리 해보았다.

1번은 생성자에서 함수를 event 함수에 추가 후, 동작하지 않는다.

2번은 PlayerInputController에서 InputValue(입력값을 받음)를 받아서 Move event함수를 호출하여 부모클래스로 접근한다.

3번은 부모에있는 TopDownController의 event Action에 등록된 함수를 Invoke()로 동작시키면

TopDownMoveMent에 있는 함수를 동작시키게 한다.

 

그 이후로, 입력값을 받을때마다 2 ~ 3번을 반복하게 된다.

 

이 로직은 상위 부모 클래스로 Controller로 선언 후 각 기능(이동,공격등등)마다 Class로 설계하여 SRP 원칙을 지켰고

event 함수를 사용하여 확장성을 챙겼다고 생각한다.

 

이렇게 구성하게 되면 

'기능 변경(수정)이 일어 났을때의 파급 효과가 최대한 적게 일어난다.

즉, 커플링의 영향이 적어진다고 볼 수 있는것이다. 

 

해당 구조를 UML로 표현하면 이렇게 된다.

 

기능을 분리하였고 TopDownController를 참조하여서 그 안에 사용할 메서드를 Event로 저장합니다.

그럼 PlayerInputController는 자신의 부모클래스에 저장된 event들을 호출하여 사용이 가능해집니다.

 

Unity에서 컴포넌트로 적용한 모습

PlayerInputController 부모 클래스에 해당 기능들을 저장시키고 inputController에서 호출한다.

 

SRP(단일 책임 원칙)에 대해서는 해당 블로그 글을 참고 하였습니다.

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-SRP-%EB%8B%A8%EC%9D%BC-%EC%B1%85%EC%9E%84-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 SRP (단일 책임 원칙)

단일 책임 원칙 - SRP (Single Responsibility Principle) 단일 책임 원칙(SRP)는 객체는 단 하나의 책임만 가져야 한다는 원칙을 말한다. 여기서 '책임' 이라는 의미는 하나의 '기능 담당'으로 보면 된다. 즉,

inpa.tistory.com

 

+ Recent posts