스터디
[디자인패턴] 전광판을 예시로 풀어본 Bridge 패턴
안녕하세요 홍성호 입니다. 요즘 Java 언어로 배우는 디자인 패턴 입문 책으로 사내 스터디에 참여중 입니다. https://book.naver.com/bookdb/book_detail.nhn?bid=4529127 JAVA 언어로 배우는 디자인 패턴 입문 JAVA 언어를 통해 알기 쉽게 배우는 디자인 패턴!『JAVA 언어로 배우는 디자인 패턴 입문』은 디자인 패턴의 기초를 소개하는 입문서이다. 디자인 패턴은 먼 장래를 위해 배우는 것이 아니다. 우리 book.naver.com 평소에도 발표한다고 생각하고 스터디를 준비했었지만, 이번에는 진짜 발표를 하는거라 더 신경쓰이네요. 여러 각도에서 패턴을 살펴보겠습니다. Bridge 패턴 '기능의 클래스 계층'과 '구현의 클래스 계층' 사이에 다리를 놓는 패턴이라..
[엘레강트 오브젝트] '생성자에 코드를 넣지 마세요' 적용해보기
https://youtu.be/PLJR-Akvjcw 안녕하세요 개발자 홍성호 입니다. 엘레강트 오브젝트 책을 얼마전 부터 조금씩 보고 있는데 흥미로운 주제를 만나게 되었습니다. https://book.naver.com/bookdb/book_detail.nhn?bid=17651286 엘레강트 오브젝트 『엘레강트 오브젝트』 는 〈-ER로 끝나는 이름을 사용하지 마세요〉, 〈생성자 하나를 주 생성자로 만드세요〉, 〈생성자에 코드를 넣지 마세요〉, 〈가능하면 적게 캡슐화하세요〉, 〈최소한 book.naver.com (이책입니다...! 쬐끔밖에 읽지 않았지만 토론 주제가 많아서 완전 꿀잼입니다ㅋㅋ) '1.3 챕터 생성자에 코드를 넣지 마세요' 인데요. 생성자 내부에서 행위를 하지말고 메소드를 통해서 직접 실행할 ..
[디자인패턴] Builder 패턴
안녕하세요 개발자 홍성호 입니다. 요즘 Java 언어로 배우는 디자인 패턴 입문 책으로 사내 스터디에 참여하고 있는데요. 이번주는 빌더 패턴 차례라서 공부를 하게 되었습니다. 예전부터 빌더 패턴은 자주 접하게 되었던것 같아요. 객체 생성시에 지정해줘야하는 요소들이 다양할 때 빌더 패턴을 이용하고 있습니다. 빌더 패턴의 원래 의도가 맞는건지 점검해보고 싶었어요. 이팩티브 자바의 빌더 패턴 조금 찾아보니 이팩티브 자바의 빌더 패턴과, GoF의 빌더 패턴이 차이가 있었습니다. 아래의 글을 보면 자세히 알 수 있는데요. 이팩티브 자바의 빌더패턴은 생성자에 매개변수가 많을 때 사용합니다. https://johngrib.github.io/wiki/builder-pattern/ 이 패턴도 실무에서 많이 사용되고 있습..
[디자인패턴] Template Method 패턴
안녕하세요 코찐 입니다. 오늘은 템플릿 메소드 패턴에 대해 공부해보겠습니다. 개념 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴을 템플릿 메소드 패턴이라고 부릅니다. - Java 언어로 배우는 디자인 패턴 입문 p.71 반복되는 절차로 수행하는 작업을 추상화해둡니다. 각 절차에 들어갈 세부 내용은 구현체에서 결정하는 방식입니다. iOS 안에서의 예시 iOS 앱 개발자들은 이미 익숙한 패턴일텐데요. 저희가 흔히 사용하는 UIViewController에도 템플릿 메소드가 있습니다. 약속된 LifeCycle에 따라서 각 함수가 호출됩니다. 틀을 미리 제공하기 때문에 클라이언트는 실행되기 원하는 코드를 틀에 넣어주면 됩니다. 틀을 가지고 동작하는 내부 원리는 ..
[디자인패턴] Iterator 패턴을 Swift로 구현해보기
요즘 회사 스터디를 'Java 언어로 배우는 디자인 패턴 입문' 책으로 진행하고 있습니다. 예전에 읽었던 책이지만 스위프트로 다시 구현해보면 더 체득할 수 있는 것이 많겠다는 생각이 들었습니다. (예전에 썼던 글 홍보) [서평] 코드로 작성된 드라마, 디자인패턴 JAVA 언어로 배우는 디자인 패턴 입문을 읽고서 medium.com Iterator는 for i in array 에서 i를 추상화해서 사용하는 패턴입니다. 클라이언트는 컬렉션 요소를 직접 다루지 않고 데이터를 순회할 수 있습니다. 책의 예제 구현해보기 그럼 책의 예제를 함께 구현해보겠습니다. 결과물 코드는 github.com/cozzin/DesignPattern/tree/main/DesignPattern/Iterator 에 있습니다. cozzi..