inblog logo
|
keepgoing
    JAVA

    [디자인패턴] 3 프록시 패턴(Proxy Pattern)

    김호정's avatar
    김호정
    Aug 13, 2024
    [디자인패턴] 3 프록시 패턴(Proxy Pattern)
    프록시 = 대리인
    프록시 패턴
    프록시는 다른 객체에 대한 대체 또는 자리표시자를 제공할 수 있는 구조 디자인 패턴입니다. 프록시는 원래 객체에 대한 접근을 제어하므로, 당신의 요청이 원래 객체에 전달되기 전 또는 후에 무언가를 수행할 수 있도록 합니다.
    프록시 패턴
    https://refactoring.guru/ko/design-patterns/proxy
     
    스프링 프레임워크에서는 내부적으로 프록시 기술을 많이 사용하고 있다.
    (예. 스프링 AOP 관점지향 프로그래밍)
    notion image
    밥먹기(핵심로직)에 집중할 수 있게 전후로 이루어지는 손씻기와 양치하기는 프록시 서버가 한다.
    내가 코드짤때 핵심 로직에만 집중할 수 있게 나머지 코드는 proxy가 책임질게!
     
     
    notion image
    포워드 프록시, 리버스 프록시
    Youtube(나)에게 가까이 있는게 reverse proxy
     
    저기 인도로 우회해서 미국 유튜브로 접속하는게 아마 VPN
     
    ? ) VPN이랑 Proxy랑 같은건가?
     
    jsp의 action 어쩌고... 프록시로 코드 분리할 수 있다고 함
     
    프록시 패턴의 장점
    단일 책임 원칙(SRP)과 개방 폐쇄 원칙(OCP)을 준수할 수 있음 → 서비스나 클라이언트들을 변경하지 않고도 새 프록시들을 도입할 수 있음
     
    앞서 작성한 도어맨과 동물들 코드에서 도어맨이 쫓아내 매서드를 실행하기 전에
    안녕이라고 인사하는 걸 추가하고 싶다면? (기존 코드 수정 없이)
    프록시도어맨을 만들어라.
     
    notion image
     
    doorman을 composition을 사용해서 doormanProxy가 사용할 수 있게 해줌
     
    ? ) composition이 뭐지.
    notion image
    notion image
    notion image
    notion image
    doormanProxy는 doorman이 아니기 때문에 상속 X , 컴포지션 사용.(has-a)
     
    [Java] 상속(inheritance)과 컴포지션(composition)에 대해서
    느슨하게 결합된 코드는 더 많은 유연셩을 제공하기 때문에 상속보다는 컴포지션을 사용하는 것을 권장함. effective java에서도 상속보다는 컴포지션을 사용하기를 권장한다.(item 18) 하지만 권장이며 모든 프로그래밍 시나리오에 대해서 컴포지션을 사용하면 안됨
    [Java] 상속(inheritance)과 컴포지션(composition)에 대해서
    https://velog.io/@vino661/상속과-컴포지션에-대해서
    [Java] 상속(inheritance)과 컴포지션(composition)에 대해서
     
     
    //
    notion image
     
    기존의 Doorman은 코드 수정 없이 쫓아내 매서드를 가지고 있다..
    notion image
    App을 보면, doorman이 아닌 doormanProxy를 사용해서(doorman은 생성자 주입)
    doormanProxy에 있는 안녕을 포함한 쫓아내 매서드를 실행시킨다.
     
    Share article

    keepgoing

    RSS·Powered by Inblog