JAVA設計模式之代理模式:Proxy
阿新 • • 發佈:2019-01-01
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");
}
}
很簡單吧?呵呵~