데코레이터 패턴 적용 전데코레이터 패턴을 이해하기 위한 예제 코드를 작성해보자.먼저 데코레이터 패턴을 도입하기 전 코드를 아주 단순하게 만들어보자.Component 인터페이스public interface Component { String operation();}operation() 메서드를 가짐 RealComponent@Slf4j public class RealComponent implements Component { @Override public String operation() { log.info("RealComponent 실행"); return "data"; } }RealComponent는 Component 인터페이스를 구현operation(): 단순히 로그를 남기고 ..
프록시 패턴을 이해하기 위한 예제 코드를 작성해보자.프록시 패턴 - 적용 전먼저 프록시 패턴을 도입하기 전 코드를 아주 단순하게 만들어보자.Subject 인터페이스 public interface Subject { String operation(); }예제에서 Subject 인터페이스는 단순히 operation() 메서드 하나만 가지고 있다. RealSubject@Slf4jpublic class RealSubject implements Subject { @Override public String operation() { log.info("실제 객체 호출"); sleep(1000); // 1초 쉬기 return "data"; } private void sleep(i..
클라이언트 : 의뢰인서버 : 서비스나 상품을 제공하는 사람이나 물건 클라이언트는 서버에 필요한 것을 요청하고,서버는 클라이언트의 요청을 처리하는 것이다.이 개념을 우리가 익숙한 컴퓨터 네트워크에 도입하면클라이언트: 웹 브라우저요청을 처리하는 서버: 웹 서버이 개념을 객체에 도입하면,클라이언트: 요청하는 객체서버: 요청을 처리하는 객체직접 호출과 간접 호출클라이언트와 서버 개념에서 일반적으로 클라이언트가 서버를 직접 호출하고, 처리 결과를 직접 받는다. 이것을 직접 호출이라 한다.그런데 클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 어떤 대리자를 통해서 대신 간접적으로 서버에 요청할 수 있다.예를 들어서 내가 직접 마트에서 장을 볼 수도 있지만, 누군가에게 대신 장을 봐달라고 부탁할 수도 있..