월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
TerminalExpression 과 NonterminalExpression이 이해가 잘 안됍니다.
강사님 강의를 보며 구조를 GoF를 참조하면서 공부를 진행중입니다. 그런데... TerminalExpression 과 NonterminalExpression이 이해가 잘 안됍니다. TerminalExpression 과 NonterminalExpression 둘 다 구조상으로는 Expression을 구현하는데 다만 NonterminalExpression은 Express를 구현하면서 집합관계라고 표시되어 있습니다. 디자인 패턴을 의도에 따라서 생각하는게 중요하지만 공개해주신 코드에서 이걸 굳이 분류를 하자면 어떻게 분류를 해야 하는지 그게 궁급합니다.
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
빌더패턴에서 디렉터를 따로 두는 이유
흔히 보던 빌더 패턴이나 롬복의 @Builder 애노테이션에서는 빌더 클래스를 inner static class로 만드는 방식을 사용했던 것 같은데 디렉터를 따로 두신 이유가 빌더의 구현체를 여러개를 사용한다면 클라이언트 측에서 디렉터에 어떤 빌더를 넣어 사용할 지 결정할 수 있도록 한거라고 이해하면 될까요?
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
컴파일 에러..?
...
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
클래스의 로드 시점
안녕하세요! 강의 너무나 잘 듣고 있습니다. public class Settings { private Settings() { } private static class SettingsHolder { private static final Settings INSTANCE = new Settings(); } public static Settings getInstance() { return SettingsHolder.INSTANCE; } } 로드 시점에 관한 질문입니다. getInstance가 호출 될때 SettingsHolder가 JVM에 로드된다고 말씀하셨습니다. 자바는 잘 모르지만, 동적으로 로드가 된다고 해석했습니다. public class Settings { private static final Settings INSTANCE = new Settings(); private Settings() { } public static Settings getInstance() { return INSTANCE; } } 그렇다면 이른 초기화 방식도, 마치 SettingsHolder가 그러하듯, 필요로 할 때 동적으로 로드 될 순 없나요? 필요로 할 때 로드된다면 SettingsHolder를 필요로 하지 않을 테니 말이죠. 그럼에도 불구하고 static inner class를 사용하는 건 반드시 이유가 있을 테니.. 하여 제 나름대로 찾아보고 테스트해 본 결과 자바 파일에 정의된 기본 클래스들은 실행 시 로드됨을 확인했습니다. 모든 클래스가 실행 시 로드되는진 확실하진 않지만 이와 관련된 JVM의 로드 정책에 대해서 간략하게 설명 부탁드립니다. :)
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요 기선님 전략패턴 실무 적용에 있어서 궁금한점 질문합니다.
안녕하세요 기선님 전략패턴 강의를 듣고 프로젝트에 적용하고 있는데요 아래와 같은 어려움을 전략패턴으로 개선하고자 합니다. singleResult, listResult 에 따라 responseEntity를 생성하는 로직이 컨트롤러 method 마다 겹친다. 아래와 같은 방법으로 개선하고자 합니다. RestAPI spec에 맞는 httpResponse를 하기 위해.. org.springframework.http.ResponseEntity<T>와 spring hateoas를 사용하여 resultTemplate 이라는 큰 틀에 responseStrategy를 인터페이스로 두고 singleResult 전략과 listResult 전략을 만들어 각 전략에 맞는 로직을 수행하여 컨트롤러에서는 전략패턴을 통한 최종적인 responseEntity를 리턴하려 합니다. 궁금한 점 1. responseEntity 와 hateoas 를 전략에서 처리하는게 무리 일까요? 2. 이런 불편함을 개선하기 위한 더 좋은 디자인패턴이 있을까요? 3. 이런 로직으로 하게 된다면 결국엔 return type이 rawType(ResponseEntity)으로 IDE 딴에서 warning을 주는데 개선할 방법이 있을까요? 감사합니다.
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
RecentPostIterator 생성자 문제
안녕하세요. 예제중 아래 부분에서public RecentPostIterator(List<Post> posts) { Collections.sort(posts, (p1, p2) -> p2.getCreatedAt().compareTo(p1.getCreatedAt())); this.internalIterator = posts.iterator(); }posts를 정렬하면 defaultIterator에 까지 영향이 갈꺼 같은데요. posts를 복사해서 사용해야 하지 않을까요?
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
다이어그램 중 ConcreteStrategy에 set이 필요할까요?
안녕하세요! 강의 너무너무 잘 듣고 있습니다. 좋은 강의를 찍어주셔서 감사합니다 :D 4:30분부터 다이어그램 자료 중 ConcreteStrategy에 setContext가 있는 이유가 있을까요??
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
싱글톤 생성 방법 중 enum 단점에 대해 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~ 우선 이런 좋은 강의를 제공해주셔서 정말 감사합니다. 싱글톤 생성 방법 중 enum으로 생성했을 시에 단점 중에 lazy initialization이 안된다고 말씀하셨는데요, 이 부분에서 궁금증이 있어서 질문 남깁니다. 예제에서 보여주신 enum 내의 INSTANCE 또한 클래스로딩 시점에 JVM의 static 영역에 변수가 등록되고, SettingsHolder와 마찬가지로 호출시점에 힙영역이 할당되면서 그때, static 영역내 변수에 해당 힙주소가 참조되는것으로 알고 있습니다, 그렇다면 이 부분도 lazy initialization이라고 볼 수 있는것 아닌가요?혹시 제가 잘못알고 있는 부분이 있다면 알려주시면 감사하겠습니다 ㅜ
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
팩토리 메서드를 설명하는데 클래스의 이름을 팩토리로 설명하면.....
클래스의 이름을 팩토리가 된다면 추상팩토리와 개념이 혼동될 것 같은데 아닌가요....?? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
클래스 다이어그램의 aggregation 관계 표현
안녕하세요. 플라이웨이트 패턴 클래스 다이어그램을 보면 FlyweightFactory와 Flyweight가 aggregation으로 관계를 맺고있는데 어떤 의미로 저 관계가 표시됐는지 궁금합니다. 인터넷을 찾아봐도 aggregation에 대한 정확한 답이 없어 문의드립니다!
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
상태(Strategy) 패턴에서 다이어그램에 setContext는 뭔가요??
상태 패턴 다이어그램 재사용으로 인한 오타라고 생각되는데, 확인 부탁드립니다!
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
책임연쇄 패턴 질문
안녕하세요. 책임연쇄패턴 강의를 보면서 질문이 있습니다. 클라이언트에서 요청을 처리하기 위해 핸들러를 감싸는 형태로 생성하여 주입하는 것을 볼 수 있는데요. 이는 관점에 따라서는 데코레이터 패턴으로도 볼수있는건지 궁금합니다. 감사합니다.
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
구조도에서 ConcreteFactory는 왜 ProductA만 쓰여있는지 모르겠어요...
처음 구조도에서 ConcreteFactory는 왜 ProductA만 두 개 쓰여있는지 모르겠어요...
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요 기선님 enum 이야기가 잠깐 나와서 질문해요
안녕하세요 기선님 플라이웨이트 패턴 1부 내용에서.. "객체의 구성요소, 동일한 값을 가지는 객체에 대해서 매번 새로운 인스턴스를 생성하면 그건 낭비다." 그래서 플라이웨이트 패턴을 구성해 기존에 생성된 인스턴스를 캐싱하여 반환한다고 하셨는데요. Q. A 객체에 a-1 객체를 멤버로 갖는 구조라면. a-1 객체를 enum class로 만들어 단일 인스턴스를 보장하고 메모리 낭비를 줄이는것도 플라이웨이트 패턴을 만족하는 하나의 방법이 될 수 있다고 보면 될까요? 감사합니다.
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
다이어그램 질문입니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 백기선님 강의 열심히 듣고 있는 수강생입니다. 설명을 잘 해주셔서 대부분 다 이해되는데 의문점이 생겨서 질문 남기게 됐습니다. 프록시 패턴 RealSubject, Porxy <-> Subject 관계과 왜 realization 관계 아니고 generalization 관계인지가 궁금합니다. Subject 인터페이스를 구현하는 거면 점선이 맞는게 아닌지 제가 잘못 알고 있는건지 궁금해서 질문드립니다.!!
- 미해결코딩으로 학습하는 GoF의 디자인 패턴
상태패턴의 순환참조(Circular Reference) 는 사용해도 좋은 것인가요?
안녕하세요 ! 좋은 강의 만들어 주셔서 너무 재밌게 공부하고 있습니다 ! 상태 (State) 패턴 은 순환구조 (Circular Reference) 로 구성된 것으로 이해 하였습니다. 순환구조를 Code smell 로 표현하는 글들을 몇번 본적이 있습니다. 제가 기억하는 이유는 다음과 같습니다. * 메모리 누수 요인 (순환을 끊지 않는한) * 컴파일(빌드) 시, 순환구조 import 에러 (Java 에서는 정상 동작되는 것이 이상하게 생각 되었습니다) 개인적으로 Parent-Child 를 순환구조로 사용하면, 사용성이 너무 좋게 느껴졌습니다. (특히 탐색을 적게 하니까 더 좋았습니다.) 선생님께서는 순환구조를 어떻게 생각하시는지, 사용해도 되는지 궁금합니다 🙇♂️ (혹은 제가 상태 패턴을 순환구조로 잘 못 이해하고 있는걸까요? 🤔) 감사합니다.
- 해결됨코딩으로 학습하는 GoF의 디자인 패턴
싱글톤에서 Early, Lazy 초기화의 차이
안녕하세요. 싱글톤에서 Early, Lazy 초기화의 차이를 공부하기 위해 클래스 로드에 개념을 처음으로 딥하게 공부해보고 있습니다.클래스 로드와 사용에 따른 초기화간 heap 메모리 할당이 되는지도 공부하기 위해 위와 같이 트래킹해봤습니다. 저는 트래킹 결과를 보고 아래와 같이 해석했습니다. 1. 사용하지 않으면 early, lazy 모두 초기화되지 않는다.2. early 는 getInstance() 메소드로 진입할 때 초기화 된다. lazy 는 getInstance() 메소드가 끝날 때 Holder 를 통해 초기화 된다. 하지만 강의에는 early 초기화시 사용하지 않아도 생성된다고 말씀해주셨습니다. 그렇다면 캡쳐 1에서 인스턴스가 보여야된다고 생각했는데 보이지 않아 혼동이 와서 질문 드립니다. 혹시 제가 개념이 헷갈리거나 트래킹을 잘못하고 있는 것일까요..? ㅠㅠ public class App { public static void main(final String[] args) { singleton(); } private static void singleton() { final EarlyInitializationSingleton early = EarlyInitializationSingleton.getInstance(); // 캡쳐 1 final LazyInitializationSingleton lazy = LazyInitializationSingleton.getInstance(); // 캡쳐 3 System.out.println("end"); // 캡쳐 5 }} public class EarlyInitializationSingleton { private static final EarlyInitializationSingleton INSTANCE = new EarlyInitializationSingleton(); private EarlyInitializationSingleton() { } public static EarlyInitializationSingleton getInstance() { return INSTANCE; // 캡쳐 2 }} public class LazyInitializationSingleton { private LazyInitializationSingleton() { } private static class LazyInitializationSingletonHolder { private static final LazyInitializationSingleton INSTANCE = new LazyInitializationSingleton(); } public static LazyInitializationSingleton getInstance() { return LazyInitializationSingletonHolder.INSTANCE; // 캡쳐 4 }}
- 해결됨코딩으로 학습하는 GoF의 디자인 패턴
enum 객체는 멀티쓰레드 환경에서 안전한가요?
안녕하세요. 기선님. 좋은 강의 감사합니다. 이번 수업을 들으면서 궁금한 점이 생겨 질문 남깁니다. 1:34초쯤 Settings enum 클래스에 number 필드 및 게터 세터를 생성하셨는데, 이러한 상황에서도 동기화 블록없이 커스터마이징된 enum 객체가 쓰레드-세이프한건가요? 답변 부탁드립니다. 감사합니다.
- 해결됨코딩으로 학습하는 GoF의 디자인 패턴
블로깅할 때 주의점 & 강의 장표의 질문들의 답
안녕하세요. 싱글톤 하나만 들었는데도 안일하게 사용하고 있던 지식들이 채워지는 너무너무 좋은 강의입니다. 강의를 들으면서 공부하는 데 질문이 있어 남깁니다. --- 1. 저는 공부하는 자료에 대해서 가능하면 블로깅을 남기고 있습니다. 남에게 설명할 수 있는 수준이 되어야만 진정으로 이해하는 것이라고 생각하기 때문입니다. 혹시 강의 내용을 블로깅하는데 있어 제약사항이 있을까요? ex) - 강의 장표 캡쳐 불가 - 강의 장표의 질문 노출 불가 2. 동영상 뿐만이 아니라 강의 장표에 많은 질문들로 한번 더 생각할 기회를 주시는 것 같아 너무너무 감사합니다. 물론 제가 먼저 찾고 공부하는 것이 우선이지만, 제가 답을 냈을 때 비교를 할 수 있는 답이 있으면 더 좋을 것 같은데 혹시 공개되어 있을까요? 다시 한번 좋은 강의 너무너무 감사합니다!!!!
- 해결됨코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요 빌더 패턴 관련 질문이 있습니다!
안녕하세요. 백기선님 설명을 너무 쉽게 잘해주셔서 재미있게 듣고 있습니다 :) 하나 궁금한 부분이 있습니다. 예전에 해당 블로그 글 을 보고 GoF에서 소개하는 빌더 패턴과 이펙티브 자바에서 설명하는 빌더 패턴 (Lombok 형태) 은 관점적으로 다르기 때문에 이름만 같은 서로 다른 패턴이 아닐까 라고 생각을했습니다. 강의에서는 빌더 예제로 구분 없이 설명해 주시는것 같은데 Director가 없는 롬복형태의 빌더를 사용해도 결국 객체 생성을 위한 목적은 같기 때문에 구분없이 동일한 빌더 패턴으로 봐도 되는 것인지 기선님의 의견이 궁금합니다.