정의 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 정의만 봐서는 바로 이해가 되지 않을 것이다. 책을 읽으면서 제가 재정의한 Strategy Pattern은 다음과 같다. 어떠한 한 객체가 동작하는 데 있어서 여러 동작을 할 수가 있는데, 이를 유동적으로 변환하는 패턴 이 또한 바로 봐서는 "무슨 소리지?" 라고 할 수 있다. 우선 전략패턴을 사용하지 않았을 때 좋지 않은 케이스를 보도록 하겠다. 상속 현재 Person 이라는 클래스를 만들고 이에 대하여 하위 세 개의 클래스는 상속을 통해 구현한 모습을 볼 수 있습니다. public class Person { public void e..
의도 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴 활용성 부분-전체의 객체 계통을 표현하고 싶을 때 사용자가 객체의 합성으로 생긴 복합 객체와 개개의 객체 사이의 차이를 알지 않고도 자기 일을 할 수 있도록 만들고 싶을 때. 사용자는 복합구조의 모든 객체를 똑같이 취급 참여자 Component: 집합 관계에 정의될 모든 객체에 대한 인터페이스를 정의. 모든 클래스에 해당하는 인터페이스에 대해서는 공통의 행동을 구현. 전체 클래스에 속한 요소들을 관리하는 데 필요한 인터페이스를 정의한다. 순환 구조에서 요소들을 포함하는 전체 클래스로 접근하는 데 필요한 인터페이스를 정의하며, 적절하다면 그 인터페이스..
의도 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 하는 것 활용성 추상적 개념과 이에 대한 구현 사이의 지속적인 종속 관계를 피하고 싶을 때. 이를테면, 런타임에 구현 방법을 선택하거나 구현 내요을 변경하고 싶을 때가 여기에 해당합니다. 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 통해 확장되어야 할 때. 이 때, 가교 패턴은 개발자가 구현을 또 다른 추상적 개념과 연결할 수 있게 할 뿐 아니라, 각각을 독립적으로 확장 가능하게 합니다. 추상적 개념에 대한 구현 내용을 변경하는 것이 다른 관련 프로그램에 아무런 영향을 주지 않아야 할 때. 즉, 추상적 개념에 해당하는 클래스를 사용하는 코드들은 구현 클래스가 변경되었다고 해서 다시 컴파일되지 않아야 합니다. 사용자들은 사용자..
1. JavaEffective 장점 1. 이름을 가질수 있다. 반환될 객체의 특성을 쉽게 묘사할 수 있다. Enter(int, int, Random) 과 Enter.minimumLevel 중 어느 것이 더 잘 설명이 되는지 생각해보자. 2. 호출 될 때마다 인스턴스를 새로 생성하지 않아도 된다. 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다.( 싱글 톤, 인스턴스화 불가) 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력 구현 클래스를 공개하지 않고도 그 객체를 반환할 수 있다. 4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않..
- Total
- Today
- Yesterday
- PostgreSQL
- Collections
- 프로그래머스
- ubuntu
- 면접
- Python
- headers
- docker-compose
- postgres
- Linux
- 그래프
- Command Line
- docker
- thread
- Pattern
- 백준
- Celery
- dockerignore
- 카카오
- 자바
- 알고리즘
- env
- BFS
- Spring
- DRF
- Java
- setattr
- 2021 KAKAO BLIND RECRUITMENT
- 파이썬
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |