首页 > 其他 > 详细

静态代理和动态代理

时间:2019-08-22 21:18:30      阅读:129      评论:0      收藏:0      [点我收藏+]

(1)按照代理的创建时期,代理类可以分为两种: 

         静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。

         动态:在程序运行时运用反射机制动态创建而成。

(2)静态代理:  静态代理需要代理对象和目标对象实现一样的接口。

    举例说明:

    接口类: UserManager

技术分享图片
 1 public interface UserManager {
 2 
 3     public void addUser(String username, String password);
 4     
 5     public void delUser(int userId);
 6     
 7     public String findUserById(int userId);
 8     
 9     public void modifyUser(int userId, String username, String password);
10 }
View Code

    目标对象:UserManagerImpl 

技术分享图片
 1 public class UserManagerImpl implements UserManager {
 2 
 3     public void addUser(String username, String password) {
 4         System.out.println("---------UserManagerImpl.add()--------");
 5     }
 6 
 7     public void delUser(int userId) {
 8     System.out.println("---------UserManagerImpl.delUser()--------");
 9     }
10 
11     public String findUserById(int userId) {
12     System.out.println("---------UserManagerImpl.findUserById()--------");
13         return "张三";
14     }
15 
16     public void modifyUser(int userId, String username, String password) {
17     System.out.println("---------UserManagerImpl.modifyUser()--------");
18     }
19 }
View Code

    静态代理对象:UserManagerImplProxy 需要实现UserManager 接口!

技术分享图片
 1 public class UserManagerImplProxy implements UserManager {
 2     private UserManager userManager;
 3     public UserManagerImplProxy(UserManager userManager) {
 4         this.userManager = userManager;
 5     }
 6     public void addUser(String username, String password) {
 7         checkSecurity();
 8         userManager.addUser(username, password);
 9     }
10     public void delUser(int userId) {
11         checkSecurity();
12         userManager.delUser(userId);
13     }
14     public String findUserById(int userId) {
15         checkSecurity();
16         return userManager.findUserById(userId);
17     }
18     public void modifyUser(int userId, String username, String password) {
19         checkSecurity();
20         userManager.modifyUser(userId, username, password);
21     }
22     private void checkSecurity() {
23         System.out.println("-------checkSecurity-------");
24     }    
25 }
View Code

 

 

 

静态代理和动态代理

原文:https://www.cnblogs.com/fzdsy/p/11396876.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!