| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 익명객체
- 네트워크
- 안드로이드
- 현대오토에버 코딩테스트
- 개발
- 삼성SW테스트
- 금융IT
- 익명클래스
- 삼성sw문제
- 너비탐색
- 언더라이터
- 알고리즘
- backjoon
- 자바
- 다이나믹 프로그래밍
- CKLU
- 모바일
- 백준
- 백준 알고리즘
- 프로그래머스
- 조합
- 멀티스레드
- Android
- IT
- 재귀함수
- Java
- 데이터베이스
- dp
- dfs
- BFS
- Today
- Total
목록프로그래밍/Design_Pattern (9)
Limky 삽질블로그
안녕하세요. Limky 입니다. 이번 시간엔 Strategy 전략 패턴에 이어 탬플릿 콜백 패턴(Template Callback Pattern)을 알아보겠습니다. 탬플릿 콜백 패턴(Template Callback Pattern)은 전략 패턴의 변형으로 DI (Dependency injection) 의존성 주입에서 사용하는 특별한 전략 패턴입니다. 탬플릿 콜백 패턴은 전략 패턴에 익명 내부 클래스를 가미해서 사용하는 방법입니다. 전략 패턴을 혹시 모르시면 아래 글을 참고 하시면 됩니다. 2017/08/28 - [Design_Pattern] - [Design_Pattern] 전략 패턴(Strategy Pattern) 자 바로 예제를 보겠습니다. 원래 기존 전략패턴에서 필요했던 구체클래스들은 StrategyG..
안녕하세요 Limky입니다. 이번 시간은 전략 패턴(Strategy Pattern)에 대해서 알아보겠습니다. 디자인 패턴의 꽃이라고 할 정도로 전략 패턴(Strategy Pattern)은 꼭 기억해야 하는 중요한 패턴입니다. 먼저 전략 패턴(Strategy Pattern)을 구성하는 3가지 요소가 무엇인지 알아야 합니다. 1. 전략 메서드를 가진 전략 객체 2. 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자) 3. 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자) 위 도식을 클래스 다이어그램으로 표현하면 다음과 같습니다. 클라이언트는 다향한 전략 중에 현재 상황에 적합한 전략을 생성해 컨텍스트에게 전략 객체를 주입합니다. 즉 Strategy Interface를 구..
안녕하세요 Limky입니다. 이번시간은 팩토리 메서드 패턴(Factory Method Pattern)에 대해서 알아보겠습니다. 팩토리 메서드 패턴(Factory Method Pattern)의 팩토리 메소드는 객체를 생성해서 반환하는 것을 말합니다. 즉 결과 값이 객체인 것입니다. 디자인 테이블과 예제를 보면서 바로 알아보겠습니다. 구체클래스는 인퍼페이스를 implements하지만, 저는 추상클래스로 구현 형식을 강제해보겠습니다. 예제에서는 추상클래스안에 추상메서드를 두었고, 구체클래스가 이를 재정의해서 구현하도록 설계했습니다. 먼저 Pizza라는 추상클래스를 두고 각 구체적인 토마토,페페로니 피자인 구체클래스들은 상속을 받아 각자의 스타일에 맞게 구현합니다. 마찬가지로 Factory 추상클래스를 만들고 ..
안녕하세요. Limky입니다. 이번 시간은 템플릿 메서드 패턴(Template Method Pattern)에 대해서 알아보겠습니다.바로 예제를 보겠습니다. 자동 기어 변속 하는 자동차가 있고, 수동 기어 변속을 하는 자동차가 있다고 칩시다.위와 같이 playWithOwner()메서드는 동일하게 구현되어 있지만, 가운데 자동 기어 변속인지 기어를 수동으로 조작 하는지에 대해서는 서로 다릅니다. 이럴 경우 템플릿 메서드 패턴(Template Method Pattern)을 사용해서 설계하면 됩니다.템플릿 메서드 패턴 디자인 테이블을 먼저 봅시다. 한꺼번에 구체클래스를 구현하지 않고 추상클래스의 템플릿 메서드를 구현해 놓으면, 구체클래스 가 상속받아 자신이 필요한 메서드들을 작성해주는 방식입니다. 자 이제 템플..
안녕하세요. Limky 입니다. 이번 시간에는 데코레이터 패턴(Decorator Pattern)에 대해서 알아보겠습니다. Decorator 는 우리말로 장식자라는 뜻을 가지고 있습니다. 말 그래도 원본에 대해서 무언가를 더 입혀서 새로운 것을 만든다는 뜻입니다. 자 끝났습니다. Decorator는 Proxy패턴하고 똑같습니다. 다만 차이점이 있다면, Proxy 패턴은 반환값을 수정하지 않고 온전하게 반환하지만, Decorator는 반환 값을 조작해서 반환합니다. 바로 Decorator 패턴에 대한 디자인 패턴 테이블을 보겠습니다. 데코레이터 패턴(Decorator Pattern)은 반환 값에 장식을 더한 것을 빼면 프록시 패턴과 동일합니다. 바로 예제를 통해서 알아보겠습니다. Cake.java publi..
안녕하세요. Limky 입니다. 이번 시간은 프록시 패턴(Proxy Pattern)에 대해서 알아보겠습니다. Proxy는 우리말로 대리자, 대변인 이라는 뜻입니다. 대리자, 대변인은 다른 누군가를 대신해서 그 역할을 수행하는 존재입니다. 프로그램에서 봤을 때도 똑같습니다. 프록시에게 어떤 일을 대신 시키는 것입니다. 구체적으로 인터페이스를 사용하고 실행시킬 클래스에 대한 객체가 들어갈 자리에 대리자 객체를 대신 투입해 클라이언트 쪽에서 실제 실행시킬 클래스에 대한객체를 통해 메서드를 호출하고 반환 값을 받는지, 대리자 객체를 통해 메서드를 호출하고 반환 값을 받는지 전혀 모르게 처리하는 것입니다. 일종의 프록시는 비서역할을 하는 것 같네요. 중요한 것은 흐름제어만 할 뿐 결과값을 조작하거나 변경시키면 안..
안녕하세요 Limky입니다. 오늘은 디자인 패턴 중 어댑터 패턴(Adapter Pattern)에 대해서 알아보겠습니다. Adatper 를 우리말로 바꿔보면 변환기 정도로 해석됩니다. 실생활에서 변환기를 우리는 참 많이 사용합니다. 예를 들어 핸드폰 충전기입니다. 핸드폰을 컨센트에다가 직접 접촉시켜 충전하지 않고 충전기라는 어댑터를 통해 핸드폰과 컨센트를 연결하여 핸드폰을 충전합니다. 그렇다면 왜 이런 Adapter를 쓸까요???? 바로 기존에 이미 잘 구축되어 있는 것을 새로운 어떤 것이 사용 할 때 양쪽 간의 호환성을 유지해주기 위함입니다. 자바에서도 직접적으로 메서드를 호출하지 않고 중간에 어댑터를 거쳐서 메서드를 호출하도록 하는 패턴이 바로 어댑터 패턴(Adapter Pattern) 입니다. 아래는..
안녕하세요. 지난 시간에 안드로이드버전으로 간단한 싱글톤(Singleton)을 배워봤는데, 이번시간은 간단한 싱글톤(Singleton)이 아닌 여러 상황을 고려하여 고도화된 싱글톤(Singleton)을 알아볼까 합니다. 하나하나 음미하며 공부해봅시다! 1. Eager initialization (이른 초기화 방식) 먼저 Singleton의 가장 기본적인 Eager initialization 방식입니다. 먼저 클래스 내에 전역변수로 instance 변수를 생성하고 private static을 사용하여 인스턴스화에 상관없이 접근이 가능하면서 동시에 private 접근 제어 키워드를 사용해 Eager initialization.instance 로 바로 접근 할 수 없도록 합니다. 또 생성자에도 private ..