개발공부/Code design

    헤드퍼스트 디자인 패턴 06.커맨드(Command) 패턴

    헤드퍼스트 디자인 패턴 06.커맨드(Command) 패턴

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. 1.커맨드 패턴이란 ✏️커맨드 패턴(Command Pattern) 객체의 행위method)를 캡슐화함으로써 주어진 여러 기능을 실행하지만 재사용성이 높은 클래스를 설계하는 패턴이다. 커맨드 객체는 통해 일련의 행동을 특정 리시버와 연결함으로써 요청을 캡슐화한 것입니다. 그렇게 되면, 호출시에 어떻게 처리되는지는 신경을 쓸 필요가 없고 처리가 된다라는 사실만 알 수 있습니다. 전등을 키는 경우를 예로 들어보겠습니다. 전등도 사실 그냥 켜지는게 아니라 전기를 끌어와서 형광등의 전력량에 알맞게 변환하고, ..

    헤드퍼스트 디자인 패턴 05.싱글턴(Singleton) 패턴

    헤드퍼스트 디자인 패턴 05.싱글턴(Singleton) 패턴

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. 목차 0. 싱글턴이란? 1. 간단한 싱글턴 2. 스레드 안정성 2-1. 동기화(synchronized) 2-2. 인스턴스 미리 선언하기 2-3. Double-Checked Licking 2-4. lazyHolder(요청시 초기화 홀더) 패턴 3. 직렬화 4. 리플랙션 5. enum을 사용한 싱글턴 6. 싱글턴 남용의 위험성 0. 싱글턴(Singleton)이란? 스레드 풀, 또는 로그용 객체, 디바이스 드라이버등 하나만 있어도 충분하고, 여러개면 오히려 문제가 발생할 수 있는 공유객체 또는 유일하게 관..

    헤드퍼스트 디자인 패턴 04.팩토리(Factory) 패턴 - 팩토리 메서드

    헤드퍼스트 디자인 패턴 04.팩토리(Factory) 패턴 - 팩토리 메서드

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. * 내용이 너무 많아, 이번 팩토리 챕터는 나눠서 작성하게 되었습니다 1. 지난 포스팅 지난 포스팅에선 심플 팩토리 패턴에 대해서 다뤘습니다. 심플 팩토리 패턴은 엄밀히 말하면 관용구에 가깝다고 말씀 드렸습니다. 최첨단 피자의 최초 코드에서 생성부를 심플 팩토리 패턴을 사용해 캡슐화 하였습니다. 2. 팩토리 메서드 패턴 팩토리 메소드 패턴은 서브클래스에서 어떤 클래스를 만들지 결정함으로써 객체 생성을 캡슐화합니다. 예를 들자면, 최첨단 피자가게는 크게 생산자 클래스와 제품 클래스로 나눌 수 있습니다...

    헤드퍼스트 디자인 패턴 04.팩토리(Factory) 패턴 - 심플 팩토리

    헤드퍼스트 디자인 패턴 04.팩토리(Factory) 패턴 - 심플 팩토리

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. * 내용이 너무 많아, 이번 팩토리 챕터는 나눠서 작성하게 되었습니다. 1. 들어가기 전에 💡 객체의 인스턴스 생성은 때론 캡슐화하여 숨겨야 할 때가 있습니다. 이를 위해 팩토리 패턴을 사용해 불필요한 의존성을 줄여 결합 문제를 해결해 봅시다. 팩토리 패턴의 필요성 객체의 인스턴스 생성은 무분별하게 사용할시, 사이드 이펙트가 생길 수 있다. 하지만 인스턴스 생성 없이 프로그램 작성은 불가능하므로, 변화에 유연하게 만들어야 한다. 인터페이스를 기반으로 다형성을 활용한 팩토리 패턴을 사용하면, OCP원칙..

    헤드퍼스트 디자인 패턴 03.데코레이터(Decorator) 패턴

    헤드퍼스트 디자인 패턴 03.데코레이터(Decorator) 패턴

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. 1. 목표 : 스타비즈 주문시스템 초대형 커피전문점 스타버즈의 주문시스템 리팩토링 단기간에 폭팔적으로 성장한 스타버즈 커피전문점은 시스템이 아직도 초창기 조그마한 까페에 머물러 있습니다. 우리는 이제, 스타버즈의 주문 시스템을 현재 수준에 맞게 리팩토링 해야 합니다. 현재 주문 시스템은 규모에 걸맞지 않게 허술합니다. 초대형 커피 전문점인 만큼 손님의 기호에 맞게 다양한 커스텀이 가능한데, 이대로라면 Becerage를 상속받는 클래스들이 옵션의 수만큼 생성되게 됩니다. 수백개 수천개가요! 관리가 매우..

    헤드퍼스트 디자인 패턴 2장. 옵저버(Observer)패턴

    헤드퍼스트 디자인 패턴 2장. 옵저버(Observer)패턴

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. 핵심 - 느슨한 결합 subject는 observer에게 값 갱신만 알려줄 뿐, 구성엔 관여하지 않음 반대로 observer는 subject에게 값 갱신만 받을뿐, 구성엔 관심이 없음 - observer패턴의 push와 pull push는 observer에게 갱신을 알리며 데이터를 전달한다 pull은 갱신만 알리며, observer는 subject의 getter method를 통해 필요한 값만 가져온다. Weather-O-Rama의 차세대 인터넷 기반 기상 스테이션 구축하기! 구조 WeatherDat..

    헤드퍼스트 디자인 패턴 1장. 전략(Strategy)패턴

    헤드퍼스트 디자인 패턴 1장. 전략(Strategy)패턴

    * 본 포스팅은 한빛미디어의 헤드퍼스트 디자인 패턴을 공부한 내용을 정리한 글입니다. 저의 부족한 생각과 주관으로 틀린 내용이 있을 수 있으니, 자세한 내용이 궁금하시다면 해당 책을 읽어보시길 추천드립니다. 1장 : 디자인 패턴의 세계로 떠나기 디자인 패턴 소개와 전략 패턴 디자인 패턴소개에 앞서, 객체지향에 대한 기본적인 이해가 필요합니다. 필요한 객체지향 기초 개념 추상화 : 공통 속성 및 기능을 묶어 이름을 붙임 캡슐화 : 데이터 구조 및 다루는 방법들을 결합시켜 묶는 것 상속 : 상위 개념의 특징을 하위 개념이 물려받는 것 다형성 : 물려받은 상위 개념의 특징을 재정하는 것 디자인 패턴의 의의 디자인패턴은 코드가 아닌 경험을 재사용하는 것이다. 다른 개발자가 우리와 똑같은 문제를 경험하고 해결하면..

    MVC 패턴

    MVC 패턴

    MVC란? Model, View, Controller의 앞글자를 따 MVC라 부른다. 위의 이름대로 어플리케이션을 세개지 역할로 구분해 개발하는 개발 방법론이다. Model 사용자가 요청한 결과를 도출하기 위해 일련의 작업을 수행 View 결과 화면을 표시 Controller 흐름 제어 및 사용자의 요청 처리 장점 모델과 뷰에 로직이 변경되더라도 서로 영향이 없어 유지보수 및 확장이 용이 MVC model 1 model에 비즈니스 로직을 처리하는 코드와 웹 브라우저에 결과를 출력하는 코드가 섞임 MVC model2 모든 요청은 서블릿이 받아서 알맞은 모델을 호출한다. 비즈니스 로직의 처리와 결과 출력 처리를 분리한다.