spring core proxy : concrete proxy

This commit is contained in:
haerong22
2021-11-14 22:52:54 +09:00
parent 649b835b93
commit 5435303be3
4 changed files with 74 additions and 0 deletions

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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";
}
}

View File

@@ -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;
}
}