天天看點

設計模式之靜态代理模式實戰

靜态代理模式很簡單,代理類和實作類都實作相同的接口,然後通過代理類來調用實作類的方法。

如我們想儲存使用者資訊之前列印使用者資訊,或者儲存使用者資訊之後把這些資訊緩存下來,即在運作方法前後插入執行一個别的操作,下面是一個簡單的示例。

使用者接口

public interfaceUserInterface{

boolean saveUser(User user);

}

使用者接口實作

public classUserInterfaceImplimplements UserInterface {

@Override

public boolean saveUser(User user) {

System.out.println("儲存使用者: " + user.getName());

return true;

public classTest{

public static void main(String[] args) {

testStaticProxy();

private static voidtestStaticProxy() {

User user = new User();

user.setName("tom");

new StaticProxy(new UserInterfaceImpl()).saveUser(user);

static class StaticProxy implements UserInterface {

private UserInterface userInterface;

public StaticProxy(UserInterface userInterface) {

this.userInterface = userInterface;

System.out.println("靜态代理-開始儲存使用者");

boolean result = userInterface.saveUser(user);

System.out.println("靜态代理-儲存使用者結果: " + result);

System.out.println();

return result;

結果輸出:

靜态代理-開始儲存使用者

儲存使用者: tom

靜态代理-儲存使用者結果: true

通過代碼實戰的方法學習設計模式,是不是覺得靜态代理很簡單了?

下面問題來了,如果我們想把使用者接口内所有的方法都要代理,那我們所有的方法都要代理一遍,又或者之後又添加了新的方法,那又得重新寫代理,十分麻煩,明天分享下動态代理的實作,解決了靜态代理的不便擴充性。

繼續閱讀