昆明java培训
达内昆明广州春城路

18487146383

热门课程

Spring笔记--代理模式

  • 时间:2016-08-31
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明达内Java培训的老师给大家讲静态代理。

静态代理:自己定义的代理类;

动态代理:程序在运行时生成。

一、静态代理:

接口:UserManager:对用户的增删改查。

1 package com.dwr.spring.proxy;

2

3 public interface UserManager {

4    public void addUser(String username,String password);

5    public void deleteUser(int userid);

6    public void modifyUser(int userid,String username,String password);

7    public void findUser(int userid);

8 }

实现类:UserManagerImpl:

1 package com.dwr.spring.proxy;

2

3 public class UserManagerImpl implements UserManager {

4    @Override

5    public void addUser(String username, String password) {

6        System.out.println("--------UserManagerImpl.addUser()----------");

7    }

8

9    @Override

10    public void deleteUser(int userid) {

11        System.out.println("--------UserManagerImpl.deleteUser()----------");

12    }

13

14    @Override

15    public void modifyUser(int userid, String username, String password) {

16        System.out.println("--------UserManagerImpl.modifyUser()----------");

17    }

18

19    @Override

20    public void findUser(int userid) {

21        System.out.println("--------UserManagerImpl.findUser()----------");

22    }

客户端类:调用方法;

1 package com.dwr.spring.proxy;

2

3 public class Client {

4

5    public static void main(String[] args){

6        UserManager userManager = new UserManagerImpl();

7        userManager.addUser("Jack","123456");

8    }

9 }

结果:

1 --------UserManagerImpl.addUser()----------

结果正常显示。

在UserManagerImpl中加入安全性检测:

1 public void checkSecurity(){ 2 System.out.println("--------UserManagerImpl.checkSecurity()----------"); 3 }

UserManagerImpl中每个方法都要调用该方法,耦合度提高。使用代理实现类实现该功能:

在代理中:必须要有要控制对象的引用;

将安全检测方法放到代理类中。调用每个方法前进行安全检测,对原有的类的结构并没有破坏,也完成了需求。

UserManagerImplProxy类:

1 package com.dwr.spring.proxy;

2

3 public class UserManagerImplProxy implements UserManager {

4    private UserManager userManager;

5

6    public UserManagerImplProxy(UserManager userManager){

7        this.userManager = userManager;

8    }

9

10    public void checkSecurity(){

11        System.out.println("--------UserManagerImpl.checkSecurity()----------");

12    }

13

14    @Override

15    public void addUser(String username, String password) {

16        checkSecurity();

17        this.userManager.addUser(username,password);

18    }

19

20    @Override

21    public void deleteUser(int userid) {

22        checkSecurity();

23        this.userManager.deleteUser(userid);

24    }

25

26    @Override

27    public void modifyUser(int userid, String username, String password) {

28        checkSecurity();

29        this.userManager.modifyUser(userid,username,password);

30    }

31

32    @Override

33    public void findUser(int userid) {

34        checkSecurity();

35        this.userManager.findUser(userid);

36    }

37 }

客户端测试:

1 package com.dwr.spring.proxy;

2

3 public class Client {

4

5    public static void main(String[] args){

6        //使用静态代理模式实现

7        UserManager userManager = new UserManagerImplProxy(new UserManagerImpl());

8        userManager.addUser("Jack","123456");

9    }

10 }

静态代理模式使我们自己写的,若接口中方法很多,就会很麻烦,这时就需采用AOP来处理!!!

了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:Tomcat与Servlet工作原理
下一篇:动态代理

达内培训小米MIX 2尊享版工艺精湛

程序猿教你java的创建和销毁对象

昆明java培训-程序猿带你入门到精通

昆明达内-有趣的轻量级图像浏览器

选择城市和中心
贵州省

广西省

海南省