일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- graphQL
- 디자인패턴
- 영화
- 개발
- 프로그래밍
- 드릴
- 파이썬
- 영화감상
- 엄티로드
- 리액트
- JavaScript
- 개발자
- 웹개발
- 클로즈가드
- 자바스크립트
- git
- Express
- web
- nodejs
- development
- 주짓수
- Node
- 주짓떼라
- 영화리뷰
- Redux
- 솔로드릴
- 하프가드
- 주짓떼로
- REACT
- 노드
- Today
- Total
목록Design Pattern (15)
As i wish
안녕하세요. 오늘은 프록시 패턴에 대하여 알아보겠습니다. 프록시 패턴 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴 간단합니다. 그런데 프록시 패턴에는 여러 가지 종류가 있는데요. 원격 프록시, 가상 프록시, 동적 프록시 등 여러 가지가 있는데요. 오늘은 크게 프록시 패턴에 대하여 정리해 보겠습니다. 이렇게 Proxy Class를 생성해서 RealSubject 가 아닌 Proxy 에 접근하여 RealSubject에 대한 접근은 제어하는 패턴이죠. 그 안에 원격 프록시, 가상 프록시 등이 속해 있는 거고요. 먼저 원격 프록시에 대하여 보겠습니다. 먼저 이런 식으로 구성되어 있고요. 클라이언트에서 request를 하게 되면 Proxy 가 받고 그 똑같은 re..
오늘은 스테이트 패턴 에 대하여 포스팅 해보겠습니다. 스테이트 패턴 객체의 내부 상태과 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 일단, 결론부터 얘기하자면 스테이트 패턴은 if, switch 문을 캡슐화, 분리해서 변경하여 사용 할 수 있게 됩니다. 먼저 책에서 얘기한 예제를 들어서 설명해 보겠습니다. 뽑기에 대하여 예를 들었는데요. 상태 동전이 있는 상태 동전이 없는 상태 알맹이 판매 상태 알맹이 매진 상태 행동 동전 투입 동전 반환 손잡이 돌림 알맹이 내보내기 (알맹이 매진 상태 또는 동전이 없는 상태 로 변경) 위 처럼 사용자에 행동에 따라서 상태를 변경 시켜줘야 하는데요. 이때 보통 대부분 If문을 사용하여 아래처럼 코드를 구성 하..
안녕하세요. 오늘은 컴포지트 패턴에 대하여 공부해보겠습니다. 컴포지트 패턴 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들수 있다. 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있다. 쉽게 말해 컴퓨터의 디렉토리 구조라고 생각하시면 됩니다. 컴퓨터에 어떤 디렉토리가 있다고 가정 했을 때, 디렉토리 안에는 디렉토리가 있을 수도 있고, 파일이 있을수도 있죠. 근데 클라이언트 입장에서는 이게 디렉토리인지, 파일인지 구분 없이 만들 수 있게 되어야 합니다. 즉, 클라이언트는 개별 객체(파일), 복합 객체(디렉토리) 를 같은 방법으로 다룰 수 있어야 합니다. 그럼 저는 헤드퍼스트에 나온 예제를 참고하여, 메뉴로 구성해 보겠습니다. ..
오늘은 이터레이터 패턴에 대하여 포스팅해보겠습니다. 일단 정의부터 보시죠. 이터레이터 패턴 컬렉션을 표현하는 방법을 노출시키지 않으면서도 집합체 내에 있는 모든 객체들에 하나씩 접근하는 방법을 제공합니다. 반복자를 이용하여 내부 구조를 드러내지 않으면서도 클라이언트로부터 컬렉션 안에 들어 있는 모든 원소들을 접근할 수 있게 만듭니다. 예를 들어 설명해 보겠습니다. 어떤 컬렉션에서는 List로 아이템 원소들을 관리하고, 다른 컬렉션에서는 Dictionary로 아이템을 관리한다고 했을 때에 클라이언트 입장에서는 두 개의 원소들을 나열하려고 할 때 각기 다른 방법으로 나열해야 합니다. 하지만 이터레이터 패턴을 사용하면, 어떤 식으로 내부 구조가 짜여있던지 상관없이 클라이언트는 반복자를 이용하려 아이템을 나열할..
안녕하세요. 오늘 포스팅해볼 패턴은 템플릿 메서드 패턴입니다. 일단 정의 부터 알아보겠습니다. 템플릿 메서드 패턴이란? 메서드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메서드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있다. 말 그대로 알고리즘 골격을 정의하고 알고리즘의 여러 단계 중 일부를 서브 클래스에서 구현하는 것이죠. 어렵지 않은 패턴이죠. 예를 들어 커피와 티를 만든다고 하였을 때에 - 커피 만드는 법 1. 물을 끓인다. 2. 끓는 물에 커피를 우려낸다. 3. 커피를 컵에 따른다. 4. 설탕과 우유를 추가한다. - 홍차 만드는 법 1. 물을 끓인다. 2. 끓는 물에 차를 우려낸다. 3. 차..
이번에는 지금까지 배운것 중에 유사한 세가지를 비교해 보겠습니다. 일단 간단하게 정의부터 알아보면 데코레이터 패턴 - 객체에 추가적인 교건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 어댑터 패턴 - 클래스의 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 쓸 수 엄ㅂㅅ었던 클래스들을 같이 사용할 수 있게 해줍니다. 퍼사드 패턴 - 서브시스템에 있는 일련의 인터페이스에 대한 통합 인터페이스를 제공합니다. 퍼사드 패턴에서는 서브시스템을 더 쉽게 사용할 수 있게 해 주는 고수준 인터페이스를 정의합니다. 이렇게 정의 내려 볼 수 있겠네요. 일단 비교 부터 하면 어댑터와 퍼사드는 인터페이스를 바꿉니..
이번엔 퍼사드 패턴에 대하여 포스팅 해보겠습니다. 퍼사드 패턴은 어댑터 패턴과 상당히 비슷하기 때문에 두개를 비교해 가시면서 보시면 훨씬 쉬울것 같네요. 일단 정의 부터.. 퍼사드 패턴 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다. 예를 들어 영화를 본다고 생각했을 때에 1. 팝콘 기계를 켠다. 2. 팝콘 튀기기 시작 3. 전등을 어둡게 조절 4. 스크린을 내린다 5. 프로젝터를 켠다 6. 프로젝터..... 이렇게 쭈욱 일련의 과정들이 있죠. 간단하게 이런 일련의 과정들을 묶어주는것이라고 생각하면 쉽다. 바로 코드로 확인해보면 한눈에 쉽게 확인 할 수 있다. # -*- coding: ut..
오늘은 어댑터 패턴에 대하여 포스팅 해보겠습니다. 어댑터 패턴 이란... 클래스의 인터페시으를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 쓸 수 없었던 클래스들을 같이 사용할 수 있게 해줍니다. 클라이언트는 타겟 인터페이스에 맞게 구현되어 있습니다. 어댑터는 타겟 인터페이스를 구현하며, 여기에는 어댑티 인스턴스가 들어있습니다. 즉, 클라이언트에서 타겟 인터페이스를 사용하여 메소드를 호출함으로써 어댑터에 요청을 합니다. 그럼 어댑터에서는 어댑티 인터페이스를 사용하여 그 요청을 어댑티에 대한 매소드 호출로 변환하죠. 마지막으로 클라이언트에서는 호출 결과를 받긴 하지만 중간에 어댑터가 껴 있는지는 알지 못하죠. 역시 코드로 설명하면 아주 가뿐합니다!! # -*- codin..
오랜만에 포스팅인데요 오늘은 커멘드 패턴에 대하여 알아 보겠습니다. 일단 커멘드 패턴이란... 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. 쉽게 설명하면 가게에서 주문을 하는 경우라고 설명 할 수 있겠는데요. 손님이 주문을 하면, 웨이터가 그 주문을 받고 주문에 따라 주방장에게 요청을 하면, 주방장이 주문에 따라서 각 요리를 만드는것으로 쉽게 비유해 볼 수 있겠네요. 여기서 손님은 client, 웨이터는 invoker, 주문서가 command, 손님이 웨이터에게 주문서를 주는 행위를 setCommand(), 웨이터가 주방장에게 주문서를 주는 행위를 execute(), 주방장..
안녕하세요 오늘 알아볼 패턴은 싱글톤 패턴(Singleton pattern) 입니다. 일단 정의 부터 보시죠싱글턴 패턴 (singleton pattern) 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴. 말 그래도 인스턴스가 하나만 만들어지는 패턴입니다. 123456789101112131415161718192021222324252627# sigleton-pattern class SingletonInstane: __instance = None @classmethod def __getInstance(cls): return cls.__instance @classmethod def instance(cls, *args, **kargs): cls.__inst..