Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 비지터 패턴에 대해서 이번 포스트에서는 알아보겠습니다.구조 자체를 변경하지 않으면서 복합 객체 구조에 새로운 기능을 추가할 방법은 없을까요? 이럴 때 생각해보면 좋을 패턴은 비지터 패턴입니다. 비지터 패턴이란? 다양한 객체에 새로운 기능을 추가해야하는데 캡슐화가 별로 중요하지 않는 경우 비지터 패턴을 사용합니다. 비지터 패턴은 트래버서객체와 함께 구현하는데요. 트래버서는 컴포지트 패턴을 사용하는 경우 객체 내에 속해 있는 모든 객체들에 접근하는 걸 도와주는 역할을 합니다. 비지터 객체에서 복합 객체 내의 모든 객체들에 대해서 원하는 작업을 할 수 있는 환경을 만들어줍니다..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 프로토타입 패턴에 대해서 알아보겠습니다. 이 패턴은 어떤 클래스의 인스턴스를 만드는 것이 자원/시간을 많이 필요하거나 복잡한 경우 프로토타입 패턴을 사용하면 됩니다. 프로토타입 패턴이란? 프로토타입 패턴을 활용해서 기존 인스턴스를 복사하기만 하면 새로운 인스턴스를 만들 수 있습니다. 자바에서는 clone() 메소드나 역직렬화로 할 수 있습니다. 복사하였기에 클라이언트 코드에서 어떤 클래스의 인스턴스를 만드는지 전혀 모르는 상태에서 새로운 인스턴스를 만들 수 있습니다. 장점 클라이언트에서는 새로운 인스턴스를 만드는 복잡한 과정을 알 수 없어도 됩니다. 단점 때때로 객체의 ..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 메멘토 패턴에 대해서 알아보겠습니다. 객체를 이전 상태로 복구시켜야 하는 경우 메멘토 패턴을 활용하면 됩니다. 게임 좋아하시나요? 게임 같은 경우가 메멘토 패턴을 많이 사용할텐데요. 예를들어 게임을 어느정도 진행하다가 세이브 기능을 진행해야할 때 메멘토패턴을 사용하면 됩니다. 메멘토 패턴 이란? 단일 역할 원칙(single reponsibility principle) 의 원칙을 지키면서 메멘토 패턴을 바라본다면, 저장하고자 하는 상태와 핵심 객체를 분리하여야 합니다. 여기서 상태를 따로 저장하는 역할을 맡은 객체를 메멘토 객체라고 부릅니다. 장점 저장된 상태를 핵심 객체..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 미디에이터 패턴에 대해서 알아보겠습니다. 미디에이터는 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳에 집중해야 할 경우 해당 패턴을 사용하면 됩니다. 예를 들어 자동화 시스템이 주거환경에 구축되었다고 가정합니다. 아침 알람이 울리면 알람시계는 커피 포트에게 커피 만드는 일을 전송합니다. 그리고 주말에는 커피를 안끊여야하고 샤워 예정 시각 15분 전에 잔디밭 스프링클러를 꺼야합니다. 앞으로 이런 자동화 시스템의 조건이 많아지게 될 경우 어떤 객체에 어떤 규칙을 넣어야 할지 결정하기가 어려워질 수 있습니다. 이럴 경우 미디에이터 패턴을 사용하면 됩니다. 미디에이터란?..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 인터프리터 패턴에 대해서 간단히 알아보겠습니다. 어떤 언어에 대한 인터프리터를 만들 때는 인터프리터 패턴을 사용하면 되는데요. 간단한 언어를 구현 할 때, 인터프리터 패턴에서는 문법 및 그 구문을 번역하기 위 한 인터프리터를 표현한 것을 클래스 기반으로 정의합니다. 언어에 속하는 각 규칙을 나타내는 클래스는 언어를 표현하게 되는데요. 이 언어를 해석하기 위해서는 interpret() 메소를 호출해야하며, 이 메소드에는 Context(파싱하고 있는 프로그램의 입력 스트림 포함됨)도 전달 되며, 입력된 내용을 확인하고 평가하는 작업도 여기서 동작하게 됩니다. 장점 각 문법 ..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 플라이웨이트 패턴이라고 들어보셨나요? 이미 해당 패턴인지 모르고 사용하는 분들도 많을거 같습니다. 이번 시간은 플라이웨이트 패턴에 대해서 알아보겠습니다. 어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 ‘가상 인스턴스’ 를 제공할 때 플라이웨이트 패턴을 사용하면됩니다. 그럼 바로 UML 을 보면서 어떤 패턴인지 감을 잡겠습니다. 예시를 통한 플라이웨이트 알아보기 조경 설계 애플리케이션에서 나무 객체를 추가해야 할 시나리오를 갖고 생각해보겠습니다. 우리는 나무 객체를 랜덤한 x.y 을 받고 객체를 생성할 것입니다. 그렇게 되었을 많은 객체를 생성하게 되면 한달 빠르면 일..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 역할 사슬 패턴이라고 들어보셨나요? 역할 사슬은 한 요청을 두 개 이상의 객체에서 처리하고 싶을 때가 있습니다. 개발자의 성향상 if 문을 클래스 내에서 길게 사용하는 것을 지양하는 분이 계시다면 역할 사슬 패턴에 대해서 알아두면 좋을거 같습니다. 역할 사슬 패턴이란? 역할 사슬 패턴은 행위패턴으로 한 요청을 두 개 이상의 객체에서 처리할 때 사용하는 패턴입니다. ◆ 장점 ‣ 요청을 보낸 쪽하고 받는 쪽을 분리 할 수 있습니다. ‣ 사슬의 구조를 몰라도 되고 그 사슬에 들어있는 다른 객체에 대한 레퍼런스를 가질 필요가 없습니다. ‣ 사슬에 들어가는 객체 변경 및 순서 변..
Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 레거시코드를 보다보면 한번쯤은 보셨을 패턴인 빌더 패턴에 대해서 이번 시간 이야기하겠습니다. 빌더패턴이란?? 제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계들을 캡술화하고 싶다면 빌더 패턴을 활용하면 됩니다. ◆ 장점 ‣ 복합 객체가 생성되는 과정을 캡술화 합니다. ‣ 제품의 내부 구조를 클라이언트로부터 보호 할 수 있습니다. ‣ 여러 단계와 다양한 절차를 통해서 객체 생성가능합니다. ◆ 단점 ‣ 팩토리를 사용하는 경우에 비해 객체를 만들기 위해서 클라이언트에 대해 더 많이 알아야합니다. 예제를 통한 빌더패턴을 알아보기 손님마다 휴일 일자와 숙소가 달라지게 됩..
- 선교
- issue
- missioon
- RXjava
- 디자인패턴
- 코틀린
- missionchina
- DI
- 안드로이드
- IT
- 임용고시
- view
- Android Studio
- 알고리즘
- Android
- 고시문
- flutter
- 미션차이나센터
- 점수판
- MCC
- 패턴
- swift
- Kotlin
- push
- 스코어헬퍼
- java
- 탁구
- IOS
- 고시문헬퍼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |