课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Spring笔记--代理模式
  • Spring笔记--代理模式

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

  • 昆明达内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工作原理

下一篇:动态代理

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56