1. 程式人生 > >JAVA設計模式之代理模式:Proxy

JAVA設計模式之代理模式:Proxy

wangking717 寫道 代理模式的作用是:為其他物件提供一種代理以控制對這個物件的訪問。在某些情況下,一個客戶不想或者不能直接引用另一個物件,而代理物件可以在客戶端和目標物件之間起到中介的作用。 或者在一系列功能模組中加入一些擴充套件的功能模組,那個時候就會用到面向切面程式設計(AOP),其中就是用的代理。當然其中要實現代理的方式很多,本文講解靜態代理模式,其中SUN自己有提供JDK動態代理,也可以找開源庫cglib,javasist等。

類圖:


本文講解在一個service上新增日誌功能,網上可以找到追MM代理設計模式,也可以看看

public interface IUserService {  
    public void addUser(String username);  
    public void deleteUser(String username);  
} 

public class UserServiceImpl implements IUserService {  
    public void addUser(String username) {  
        System.out.println("adding the "+username);  
    }  
    public void deleteUser(String username) {  
        System.out.println("deleting the "+username);  
    }  
} 

public class UserServiceImplProxy implements IUserService {  
      
    private IUserService userService;  
      
    public UserServiceImplProxy(IUserService userService){  
        this.userService = userService;  
    }  
      
    public void addUser(String username) {  
        checkSecurity();  
        this.userService.addUser(username);  
    }  
    public void deleteUser(String username) {  
        checkSecurity();  
        this.userService.deleteUser(username);  
    }  
      
    public void checkSecurity(){  
        System.out.println("the method is checking security...");  
    }  
}  

客戶端測試:

public class Test {  
  
    public static void main(String[] args) {  
          
        UserService service = new UserServiceImplProxy(new UserServiceImpl());  
        service.addUser("wangking");  
        service.deleteUser("wangking");  
          
    }  
} 

很簡單吧?呵呵~