두가지 책으로 간단하게 정리했다.

 

- 디자인패턴입문 핵심내용

  • observer 패턴은 subject(피 관찰자)와 observer(관찰자)로 나뉜다

  • observer는 실제로 관찰자라는 의미지만 실제로 observer 패턴에서는 능동적인 관찰이라기 보다는 subject 로부터 상태가 바뀜?을 전달되는것을 기다립니다.  즉 Publish-Subscribe 패턴이라하는게 더 적당함.

 

 

- 헤드퍼스트 핵심내용

  • subject:obsever가 다대다가 될수 있음.

    • 예를들면 subject에 서울기상청, 부산기상청, 대전기상청은  한국기상청꺼를 사용하여 implement함,,  근데 나는 현재 서울기상청한테 publishing을 받아서 서울기상어플을만들었는데, 이제 부산기상어플로 바꾸려할때

  • subject가 observer에게 전달할때 본 객체자체를 넘기도록 하는게 좋다(푸시방식이 아닌 풀방식)

    • 옵저버들은 각자가 필요한 데이터들이 다를수있다. subject가 그 모두 다른 옵저버의 입맛을 챙겨주기엔 무리다.
    • 만약 subject가 확장되면서 정보들이 늘었다고치자, 그럼 퍼블릭 게터하나만 뚫어주면된다.   안그러면 메소드를 수정하는일이 생길거다.

       

'개발 > 디자인패턴' 카테고리의 다른 글

프록시 패턴 정리  (0) 2020.07.03

두가지 책에서 프록시 패턴을 정리해보았다.

 

- java 언어로 배우는 디자인 패턴 입문

    • Proxy의 뜻 "대리인"

    • 대리인이 본인을 대신해 대부분의 업무를 하다가, 중요하거나, 무거운 업무만 본인이 하게끔 하는 방식

    • 가상 프록시 패턴을 쓰는이유?

      • 속도 올리기: 인스턴스 생성이 불필요한 작업을 할때는 인스턴스를 초기화 안함으로써 그 리소스를 절약한다. lazy init!(가상프록시)

    • 등장주제는 주체 클래스, 프록시 클래스, 본인과 프록시가 구현하는 인터페이스 정도로 나뉨

    • 프록시 클래스, 본인 클래스는 강한결합이다.

      • 왜냐면 프록시 클래스가 본인클래스 필드 자체를 들고있기 떄문에..

      • 그런데 (Prinatable) Class.forName(className).newInstance() 처럼 리플렉션을 사용하면 Pritanble 구현한 본인 객체가 무엇이던간에  프록시 클래스는 영향을 안받을수있다..!  

- 헤드퍼스트

  • 프록시 패턴이란?

    • 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인에게 해당하는 객체를 제공하는 패턴

  • 프록시 패턴의 종류! 주요 3가지
    1. 원격 프록시  : 원격객체에 대한 프록시, 원격객체에 대한 접근을 마치 로컬에서 하듯이 한다.

      • 예 : 구글 docs..

    2. 가상 프록시 :  생성하는데 비용이 많이드는 객체에 대한 프록시. 생성비용이 많이드는 객체대신에 라이트한 프록시 객체가 대부분의 일을 대신하다가, 직접적 업무는 주체클래스가.

      • 예 : 배틀그라운드 초기 그래픽 초기화가 오래걸린다. 그렇기 때문에 프록시를 이용해서 게임이 시작되기전(비행기가 착륙하기전)까지 한정된공간에서 놀수있게했는데, 그게 프록시 패턴이다.
      • 예 : 여러명이 협업하는 상황에서 어떤 객체에 대한 구현이 완벽하게 되지않았다. 근데 해당 객체는 프로세스상 호출은 하니깐 일단은 프록시 객체를 호출하게 해놓고, 주체 객체가 구현이 완료되면 주체객체로 대체하는 방법도 있다. 실제 객체를 붙여보기전에 미리 프로세스를 진행할수있다는 장점이 있겠다.
    3. 보호 프록시 :  접근에 제한이 필요한 객체에 대한 프록시출처: https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%ED%8C%A8%ED%84%B4#/media/%ED%8C%8C%EC%9D%BC:Proxy_pattern_diagram.svg

 

'개발 > 디자인패턴' 카테고리의 다른 글

옵저버 패턴 정리  (0) 2020.07.03

+ Recent posts