상태패턴의 순환참조(Circular Reference) 는 사용해도 좋은 것인가요?
1077
投稿した質問数 4
안녕하세요 !
좋은 강의 만들어 주셔서 너무 재밌게 공부하고 있습니다 !
상태 (State) 패턴 은 순환구조 (Circular Reference) 로 구성된 것으로 이해 하였습니다.
순환구조를 Code smell 로 표현하는 글들을 몇번 본적이 있습니다.
제가 기억하는 이유는 다음과 같습니다.
* 메모리 누수 요인 (순환을 끊지 않는한)
* 컴파일(빌드) 시, 순환구조 import 에러 (Java 에서는 정상 동작되는 것이 이상하게 생각 되었습니다)

개인적으로 Parent-Child 를 순환구조로 사용하면, 사용성이 너무 좋게 느껴졌습니다. (특히 탐색을 적게 하니까 더 좋았습니다.)
선생님께서는 순환구조를 어떻게 생각하시는지, 사용해도 되는지 궁금합니다 🙇♂️
(혹은 제가 상태 패턴을 순환구조로 잘 못 이해하고 있는걸까요? 🤔)
감사합니다.
回答 2
2
시원한 답변 감사합니다 !!
말씀해 주신것 처럼 interface State 의 각 메서드에 Context 를 인자로 넘기니, 순환구조가 해소되었습니다 👍
public interface State {
public void addStudent(Student student, OnlineCourse onlineCourse);
public void addReview(Student student, String review, OnlineCourse onlineCourse);
}
그리고 Parent-Child 처럼 긴밀한 관계에서, 이제는 순환구조를 좀 더 당당하게 쓸 수 있을 것 같습니다.
순환구조 import 에러는 Javascript 의 모듈 번틀러 빌드시 발생했던 상황이었습니다. (빌드결과가 undefined 인 상황)
(저의 주 개발언어가 Javascript 거든요 ㅎㅎ;)
FE 주니어도 이해할 수 있는 좋은 강의 만들어주셔서 감사합니다 !!
1
안녕하세요. 좋은 질문이네요.
말씀하신대로 순환 참조는 가급적이면 피하는게 좋은데요. 이 패턴의 경우에는 제가 만든 예제 코드처럼 State쪽에서 Context를 필드로 가져도 되지만 State에 있는 메소드를 호출할 때 Context를 매개변수로 넘겨줄 수도 있습니다. 매개변수로 넘기더라도 State와 Context는 상호간에 참조를 하긴하지만 필드로 가지고 생성자로 넘겨줘야 할 때 보다는 객체 생성이나 순환 참조로 인한 이슈가 줄어들긴 할 겁니다.
순환 참조는 저도 가급적이면 피하려고 하지만, 그 둘이 긴밀하게 관련이 있는 상황이라면 굳이 피할 필요도 없다고 생각해요. 그리고 말씀하신 순환 참조 문제 중에 "컴파일(빌드) 시, 순환구조 import 에러가 발생한다" 이 부분은 사실인지 조금 더 확인해 보시는게 좋을 것 같습니다.
감사합니다.
많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?
0
116
1
@Builder에 대해 사소한 질문
0
56
1
default 기능이 있는 interface와 추상클래스의 차이
0
50
1
실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.
0
46
1
데코레이터 패턴, before 가 O(2^n) 인 이유
0
47
0
혹시 다음강의는 언제쯤..
0
349
1
volatile 사용 이유에 대해서 여쭤보고 싶습니다!
0
624
3
Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?
0
392
2
싱글톤 패턴을 깨트리는 방법
0
551
1
코드에 약간 오타가 있는거 같습니다.
0
434
1
싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.
0
569
2
안녕하세요, 강의 순서 질문드립니다.
0
686
1
스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드
0
2431
1
팩토리메소드 = 추상팩토리?
2
922
1
중재자 패턴에 관하여~
0
511
1
undo 메소드 작업중에서
1
367
1
익명클래스로 객체 생성시 의문점
0
591
1
mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요
0
480
1
객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..
1
366
1
전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.
0
283
1
플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.
0
261
1
enum 이 이른 초기화 방법이 아니라는 것은,
0
507
1
해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.
0
436
1
설계관련 궁금증이 있습니다.
0
329
0

