spring core proxy : concrete proxy
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package com.example.proxy.pureproxy.concreteproxy;
|
||||
|
||||
import com.example.proxy.pureproxy.concreteproxy.code.ConcreteClient;
|
||||
import com.example.proxy.pureproxy.concreteproxy.code.ConcreteLogic;
|
||||
import com.example.proxy.pureproxy.concreteproxy.code.TimeProxy;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class ConcreteProxyTest {
|
||||
|
||||
@Test
|
||||
void noProxy() {
|
||||
ConcreteLogic concreteLogic = new ConcreteLogic();
|
||||
ConcreteClient client = new ConcreteClient(concreteLogic);
|
||||
client.execute();
|
||||
}
|
||||
|
||||
@Test
|
||||
void addProxy() {
|
||||
ConcreteLogic concreteLogic = new ConcreteLogic();
|
||||
TimeProxy timeProxy = new TimeProxy(concreteLogic);
|
||||
ConcreteClient client = new ConcreteClient(timeProxy);
|
||||
client.execute();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.example.proxy.pureproxy.concreteproxy.code;
|
||||
|
||||
public class ConcreteClient {
|
||||
|
||||
private final ConcreteLogic concreteLogic;
|
||||
|
||||
public ConcreteClient(ConcreteLogic concreteLogic) {
|
||||
this.concreteLogic = concreteLogic;
|
||||
}
|
||||
|
||||
public void execute() {
|
||||
concreteLogic.operation();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.example.proxy.pureproxy.concreteproxy.code;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class ConcreteLogic {
|
||||
|
||||
public String operation() {
|
||||
log.info("ConcreteLogic 실행");
|
||||
return "data";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.example.proxy.pureproxy.concreteproxy.code;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class TimeProxy extends ConcreteLogic {
|
||||
|
||||
private final ConcreteLogic concreteLogic;
|
||||
|
||||
public TimeProxy(ConcreteLogic concreteLogic) {
|
||||
this.concreteLogic = concreteLogic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String operation() {
|
||||
log.info("TimeDecorator 실행!");
|
||||
long startTime = System.currentTimeMillis();
|
||||
String result = concreteLogic.operation();
|
||||
long endTime = System.currentTimeMillis();
|
||||
long resultTime = endTime - startTime;
|
||||
log.info("TimeDecorator 종료 resultTime={}", resultTime);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user