자바 디자인 모드 - 프 록 시 모드 상세 설명
3811 단어 자바 디자인 모드
2. 정적 에이전트;
interface Network { // Network
public void browse(); //
}
class Real implements Network { //
public void browse() { //
System.out.println(" !");
}
}
class Proxy implements Network { //
private Network network;
public Proxy(Network network) {//
this.network = network; //
}
public void check() { //
System.out.println(" !");
}
public void browse() {
this.check(); //
this.network.browse(); //
}
}
public class ProxyDemo {
public static void main(String args[]) {
Network net = null; //
net = new Proxy(new Real()); // ,
net.browse(); //
}
}
3. 동적 에이전트, jdk 동적 에이전트, cglib 동적 에이전트 인터페이스 로 나 뉜 다.
public interface DAOInterface {
public void add();
public void delete();
public void update();
public void query();
}
묵인 실현
public class UserDao implements DAOInterface {
@Override
public void add() {
System.out.println(" add");
}
@Override
public void delete() {
System.out.println(" delete");
}
@Override
public void update() {
System.out.println(" update");
}
@Override
public void query() {
System.out.println(" query");
}
}
jdk 동적 에이전트
public class ProxyTest {
public static void main(String[] args){
final DAOInterface userDao = new UserDao();
DAOInterface proxy = (DAOInterface) Proxy.newProxyInstance(userDao.getClass().getClassLoader(), userDao.getClass().getInterfaces()
, new InvocationHandler() {
//
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(" :"+method.getName());
Object o = method.invoke(userDao, args);//
return o;
}
});
proxy.delete();
}
}
Cglib 동적 에이전트
public class CglibTest {
public static void main(String[] args){
final UserDao target = new UserDao();
Enhancer en = new Enhancer();
//
en.setSuperclass(target.getClass());
//
en.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable {
System.out.println(" "+arg1.getName());
Object obj = arg1.invoke(target, arg2);
return obj;
}
});
UserDao proxy = (UserDao) en.create();
proxy.add();
}
}
참고 자료:https://www.cnblogs.com/chentingk/p/6433372.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 디자인 모드 의 [조합 모드]1. 조합 모드 는 트 리 구조 에 대한 작업 에 적 용 됩 니 다. 예 를 들 어 모든 권한 트 리 를 재 귀적 으로 검사 하고 재 귀적 으로 권한 트 리 를 삭제 하 는 등 입 니 다. 2. 추상 적 인 서브 노...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.