Java 设计模式之普通代理

代理一般用于给多个的类实现相同的方法,如记录日志、权限控制等等。普通代理的实现步骤如下:

一、定义接口

package com.casic.test.proxy;

public interface UserService {

   /**

    * 添加用户

    */

   public void addUser();

   /**

    * 删除用户

    */

   public void deleteUser();

   /**

    * 查询用户

    */

   public void queryUsers();

}

二、接口实现

public class UserServiceImpl implements UserService {

   public void addUser() {

      System.out.println("添加 一个用户 ");

   }

   public void deleteUser() {

      System.out.println("删除一个用户 ");

   }

   public void queryUsers() {

      System.out.println("查询所有用户 ");

   }

}

三、代理同样实现接口,并拥有一个接受接口对象的构造参数

public class UserServiceProxy implements UserService{

   private UserService userService;

   /**

    * @param userService UserService 接口

    */

   public UserServiceProxy(UserService userService) {

      this.userService = userService;

   }

   public void addUser() {

      System.out.println("------开始添加------");

      userService.addUser();

      System.out.println("------添加完成------");

   }

   public void deleteUser() {

      System.out.println("------开始删除------");

      userService.deleteUser();

      System.out.println("------删除完成------");

   }

   public void queryUsers() {

      System.out.println("------开始查询------");

      userService.queryUsers();

      System.out.println("------查询完成------");

   }

}

四、代理调用

1.声明一个实现类对象,用接口形式声明

2.将声明的对象传入代理类,获得代理类的实现对象

package com.casic.test.proxy_1;

import org.junit.Test;

public class UserServiceTest {

   @Test

   public void test() {

      UserService userService = new UserServiceImpl();

      userService = new UserServiceProxy(userService);

       userService.addUser();

   }

}

原文地址:https://www.cnblogs.com/oftenlin/p/3096638.html