일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬릿코드풀기
- 파이썬 알고리즘 풀기
- 릿코드풀이
- 파이썬알고리즘풀기
- 알고리즘풀기
- 릿코드 풀기
- python priority queue
- python 알고리즘
- 파이썬 릿코드
- leetcode 풀기
- 잇츠디모
- python xor
- 상가수익률계산기
- 릿코드 파이썬
- leetcode풀기
- LeetCode
- binary search
- 알고리즘풀이
- 릿코드풀기
- 파이썬 알고리즘
- python zip_longest
- python Leetcode
- python 릿코드
- 코틀린기초
- 파이썬 프로그래머스
- 파이썬알고리즘
- 릿코드
- 파이썬릿코드
- python sorted
- leetcode풀이
- Today
- Total
목록전체 글 (273)
소프트웨어에 대한 모든 것

브릿지 패턴 정의 기능 클래스 계층과 구현 클래스 계층을 연결해주는 패턴 기능 클래스, 구현 클래스는 서로 영향을 주지 않고 구조적으로 변경할 수 있음 브릿지 패턴은 상속보다는 구성을 선호 브릿지 패턴의 의도는 추상화를(기능) 구현에서 분리하여 두 가지가 독립적으로 변할 수 있도록 하는 것 브릿지 패턴 장점 예를 들어서, Shape(원, 사각)이 있고 색깔(Red, Blue)이 있는 경우 브릿지 패턴을 적용하지 않으면 각각 4개의 클래스가 존재합니다. 여기에서 새로운 shape이나 새로운 Color가 추가된다면 exponentially하게 클래스 수가 증가합니다. 너무 비효율적이고 관리도 어렵습니다. 브릿지 패턴을 적용해서 기능부, 구현부를 나눈다면 새로운 Shape나 Color가 추가되도 각 층에 클래..

템플릿 메소드 정의 알고리즘의 골격만 정의하고 각 단계에 대한 구체적인 처리는 서브클래스에게 위임하는 패턴 행동 패턴 중 하나로 굉장히 자주 사용하는 패턴 중 하나 템플릿 메소드 패턴은 슈퍼클래스에서 알고리즘 뼈대만 작성하고, 서브클래스에서 구체적인 구현을 재정의하는 패턴 템플릿 메소드 클래스 다이어그램 템플릿 메소드 활용 Pizza의 go() 함수가 템플릿 메소드(알고리즘 골격)에 해당하고, Pizza를 상속받은 NYPizza, KoreaPizza 클래스가 있습니다. NYPizza는 뉴욕 스타일로 피자를 만들어야 하기 때문에 prepare(), cook(), eat() 함수를 재정의 합니다. KoreaPizza 또한 한국식에 맞게 함수를 재정의 합니다. 결국 피자를 만들기 위한 뼈대만 Pizza 클래스..

추상 팩토리 패턴 정의 다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 패턴 추상 팩토리 패턴은 다양한 구성 요소 별로 객체의 집합(군)을 만들기 위한 패턴 추상 팩토리 패턴 클래스 다이어그램 ConcreteFactory1, ConcreateFactory2는 서로 다른 객체의 집합군을 생성한다. AbatractFactory를 상속 받아서 ConcreateFactoryN을 만들어서 다양한 객체의 집합군을 생성할 수 있다. 클라이언트는 복잡한 객체의 생성에 관여하지 않고 팩토리에게 객체의 생성을 맡겨서 객체 생성을 분리시킨다. 추상 팩토리 패턴 활용 Browser, Messenger 제품이 있고, 해당 제품에 일반 제품과 보안이 적용된 ..

124 나라의 숫자 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 문제) 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법124 나라10진법124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 s..

중재자 패턴 정의 클래스 간의 복잡한 관계들을 캡슐화하여 하나의 클래스에서 관리하도록 처리하는 패턴 M개의 객체들 사이에 중재자를 추가하여 중재자가 모든 객체들의 통신을 담당 각 객체들은 서로 알 필요가 없고 중재자 클래스가 관리하므로 loose coupling을 유지 옵저버 패턴은 1개의 publisher(subject)가 N개의 subscriber(observer)에 대해서 push하는 방식을 통해 관리하지만 중재자 패턴은 M개의 publisher와 N개의 subscriber 사이에서 1개의 중재자(mediator)를 통해서 통신하는 방식 중재자 패턴은 복잡한 M개의 객체 사이에 N개의 관계가 형성되어 있을 때 M개의 객체 사이에 중재자를 하나 넣어서 이를 M:1 관계로 바꿔준다. 중재자 패턴 언제 ..

옵저버 패턴 정의 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용 발행/구독 모델로 알려져 있음 객체의 상태 변화를 관찰하는 관찰자들(옵저버)의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하는 디자인 패턴 어떤 객체의 상태가 변할 때 그와 연관된 객체들에게 알림을 보냄 옵저버 패턴 클래스 다이어그램 옵저버 패턴 활용 날씨(온도, 습도, 압력) 데이터가 있고 날씨 데이터가 변경되면 등록한 영상 출력 기기에 정보를 업데이트 하는 시스템을 디자인 해봅시다. 날씨 데이터는 Subject에 해당하고 영상 출력기기는 옵저버(구독자)에 합니다. WehaterData는 온도, 습도, 압력 데이터를 가지고 있고, observer 리스트에 옵저버들을 관리합니..

프로식 패턴 정의 프로토타입 패턴은 cloing을 통해서 존재하는 오브젝트 기반으로 오브젝트를 생성합니다. 프로토타입 패턴은 객체 생성에 비용, 시간, 리소스가 많이 필요하고 이미 유사한 객체가 있는 경우에 사용됩니다. 따라서 이 패턴은 원본 객채를 새 객체에 복사한 다음 필요에 따라 수정하는 메커니즘을 제공합니다. 프로토타입 패턴 장점 sub-classing을 줄임 객체 생성의 복잡성을 숨김 클라이언트는 어떤 유형의 객체가 될지 알지 못해도 새 객체를 얻을 수 있음 런타임에 객체를 추가하거나 제거할 수 있음 비용이 많이 드는 데이터베이스 작업 후에 특정 객체가 생성된다고 칩시다. 이 작업이 반복 요청이 발생하고 중복적인 객체 생성에 많은 비용이 들어갑니다. 그렇다면 생성된 객체를 캐시하고 다음 요청이 ..

컴포지트 패턴 정의 컴포지트 패턴(합성 패턴)은 하나의 클래스와 복합 클래스를 동일한 구성을 하여 사용하는 방법입니다. 컴포지트 패턴은 디렉토리, 파일과 같은 트리 구조의 재귀적 데이터 구조를 표현하는데 적합한 패턴입니다. 컴포지트 의도는 트리 구조로 작성하여, 전체-부분(whole-part) 관계를 표현하는 것입니다. 컴포지트 패턴 언제 사용 전체-부분 관계를 트리 구조로 표현하고 싶을 경우 전체-부분 관계를 클라이언트에서 부분, 관계 객체를 동일하게 처리하고 싶은 경우 컴포지트 패턴 클래스 다이어그램 Client는 Lean와 Composite를 직접 참조 하지 않고 공통 인터페이스 Componet를 참조 Leaf는 Component 인터페이스를 구현 Composite 클래스는 Component 객체 ..