代理模式

动态代理举例
/***
 * 用户控制接口
 * @author Administrator
 *
 */
public interface UserManager {

    public void addUser(String userId,String userName);
    public void modifyUser(String userId,String userName);
    public void delUser(String userId);
    public String findUser(String userId);
}
/****
 * 用户管理真正的实现类
 * @author Administrator
 *
 */
public class UserManagerImpl implements UserManager {

    /*****
     * 添加用户
     */
    public void addUser(String userId, String userName) {
        System.out.println("正在添加用户,用户为:"+userId+userName+"……");
    }
    /*****
     * 删除用户
     */
    public void delUser(String userId) {
        System.out.println("delUser,userId="+userId);
    }
    /***
     * 查找用户
     */
    public String findUser(String userId) {
        Log.d("user--","findUser,userId="+userId);
        System.out.println("findUser,userId="+userId);
        return userId;
    }

    public void modifyUser(String userId, String userName) {
        System.out.println("modifyUser,userId="+userId);
    }
}
//产生一个对象的代理
public class LogHandler implements InvocationHandler {
    //被代理的类
    private Object targetObject;
    public Object newProxyInstance(Object targetObject) {
        this.targetObject = targetObject;
        return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
                targetObject.getClass().getInterfaces(), this);
    }
//完成对真正方法的调用
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        Object ret = null;

        try {
            Log.d("user--","正在进行操作前的准备工作……");
            //调用目标方法
            ret = method.invoke(targetObject, args);
            Log.d("user--","操作成功,正在进行确认处理……");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("error-->>" + method.getName());
            throw e;
        }
        return ret;
    }
}
public class UserManagerActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //目标对象
        LogHandler logHandler = new LogHandler();
        //生成代理
        UserManager userManager = (UserManager)logHandler.newProxyInstance(new UserManagerImpl());
        userManager.findUser("0001");
    }
}

参考1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值