码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式 代理模式之静态代理

时间:2016-04-23 13:29:49      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

静态代理要搞清楚三个关系:客户类   代理类   委托类

             代理类的行为要类似且强于委托类(实现方法有1.继承,2.代理类与委托类实现共同的接口(首选))

/**
* 用静态代理模式完成日志的操作
* @author Administrator
*
*/
public class UserAction {
  private UserDao userDao = UserDaoFac.newUserDao();
  public void add(){
    System.out.println("========UserAction========");
    userDao.add();
  }
  public static void main(String[] args) {
    new UserAction().add();
  }
}

public interface UserDao {   //接口
  public void add();
}

public class UserDaoImpl implements UserDao{   委托类
  @Override
  public void add() {
    System.out.println("=====UserDao======");
    // System.out.println("完成日志操作!!!");//侵入式 植入式代码
  }
}

public class UserDaoFac {     //工厂
  public static UserDao newUserDao(){
    return new UserPowerProxy(new UserLogProxy(new UserDaoImpl()));
  }
}

public class UserLogProxy implements UserDao {   //代理类
  private UserDao userDao;
  //构造注入
  public UserLogProxy(UserDao userDao) {
    super();
    this.userDao = userDao;
  }
  @Override
  public void add() {
    userDao.add();//把委托类的活干了
    System.out.println("添加了日志操作");
  }
}

public class UserPowerProxy implements UserDao {  //代理类
  private UserDao userDao;
  //构造注入
  public UserPowerProxy(UserDao userDao) {
    super();
    this.userDao = userDao;
  }
  @Override
  public void add() {
    System.out.println("增加一个权限判断");
    userDao.add();
  }
}

设计模式 代理模式之静态代理

标签:

原文地址:http://www.cnblogs.com/hwgok/p/5424355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!