20220909
한 번에 끝내는 Java/Spring 웹 개발 마스터
1) Brwoser
package com.company.design.Proxy;
public class Browser {
private final String url;
public Browser(String url) {
this.url = url;
}
public Html show() {
System.out.println("browser loading html from : " + url);
return new Html(url);
}
}
2) BrowserProxy
package com.company.design.Proxy;
public class BrowserProxy implements IBrowser {
private final String url;
private Html html;
public BrowserProxy(String url) {
this.url = url;
}
public Html show() {
if (html == null) {
this.html = new Html(url);
System.out.println("BrowserProxy loading html from: " + url);
}
System.out.println("BrowserProxy use cache html: " + url);
return html;
}
}
3) Html
package com.company.design.Proxy;
public class Html {
private final String url;
public Html(String url) {
this.url = url;
}
}
4) IBrowser
package com.company.design.Proxy;
public interface IBrowser {
Html show();
}
5) Main
Browser browser = new Browser("www.naver.COM");
browser.show();
browser.show();
browser.show();
browser.show();
IBrowser browser1 = new BrowserProxy("www.naver.com");
browser1.show();
browser1.show();
browser1.show();
browser1.show();
AtomicLong start = new AtomicLong();
AtomicLong end = new AtomicLong();
AopBrowser aopBrowser = new AopBrowser("www.google.com",
() -> {
System.out.println("before");
start.set(System.currentTimeMillis());
},
() -> {
System.out.println("after");
end.set(System.currentTimeMillis() - start.get());
}
);
aopBrowser.show();
System.out.println(end + " ms");
- Proxy패턴에 대한 코드를 오늘 처음 배워보았다.
- Proxy는 대리인이라는 뜻으로, Proxy class를 통해서 대신 전달하는 형태로 설계되고, 실제 client는 Proxy에서 결과를 가져온다는 패턴의 형태라고 한다.
- 잘 모르는 부분인 만큼 추가적인 복습이 더 필요할 듯 하다,,,