[TOC]
> 靜態代理在使用時,需要定義**接口或者父類**,被代理對象與代理對象一起實現相同的接口或者是繼承相同父類.
### 接口
IUserDao.java
~~~
package com.yc.model.Service;
public interface IUserDao {
void save();
}
~~~
### 目標對象:
UserDao.java
~~~
package com.yc.model.Service.Impl;
import com.yc.model.Service.IUserDao;
public class UserDao implements IUserDao {
@Override
public void save() {
System.out.println("保存數據");
}
}
~~~
### 代理對象:
UserDaoProxy.java
~~~
package com.yc.model.Proxy;
import com.yc.model.Service.IUserDao;
public class UserDaoProxy implements IUserDao {
//接收保存目標對象
private IUserDao target;
//代理的構造函數,被代理者傳遞進來
public UserDaoProxy(IUserDao target){
this.target=target;
}
@Override
public void save( ) {
System.out.println("開始事務");
target.save();
System.out.println("提交事務");
}
}
~~~
### 測試
~~~
package com.yc.model;
import com.yc.model.Service.IUserDao;
import com.yc.model.Service.Impl.UserDao;
public class Test {
public static void main (String[] args){
//目標對象
IUserDao target =new UserDao();
//代理對象
UserDaoProxy proxy = new UserDaoProxy(target);
//執行的是代理的方法
proxy.save();
}
}
~~~
### 執行結果
