首页 > 代码库 > Java静态代理解析
Java静态代理解析
java 静态代理的主要特征就是,代理类和委托类要实现同样的接口。在调用接口方法的时候,对外提供一个实例工厂对象。
静态代理类优缺点
优点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
缺点:
1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。
1 public interface ImplUserDao {2 public void add();//定义 添加接口3 public void delete();//定义删除接口4 }
1 public class UserDaoImpl implements ImplUserDao{ 2 3 /* (non-Javadoc) 4 * @see cn.org.fupin.ImplUserDao#add() 5 */ 6 public void add() { 7 // TODO Auto-generated method stub 8 System.out.println("UserDaoImpl.add()"); 9 }10 11 /* (non-Javadoc)12 * @see cn.org.fupin.ImplUserDao#delete()13 */14 public void delete() {15 // TODO Auto-generated method stub16 System.out.println("UserDaoImpl.delete()");17 }18 19 20 }
1 public class UserDaoProxy implements ImplUserDao{ 2 3 private ImplUserDao implUserDao; 4 5 public UserDaoProxy(ImplUserDao implUserDao) { 6 7 this.implUserDao = implUserDao; 8 } 9 10 public void add() {11 // TODO Auto-generated method stub12 implUserDao.add();13 }14 15 /* (non-Javadoc)16 * @see cn.org.fupin.ImplUserDao#delete()17 */18 public void delete() {19 // TODO Auto-generated method stub20 implUserDao.delete();21 }22 23 }
1 public class UserDaoFactory {2 3 4 public static ImplUserDao getUserInstance(){5 return new UserDaoProxy(new UserDaoImpl());6 }7 8 }
1 public class Client {2 public static void main(String[] args) {3 ImplUserDao implUserDao = UserDaoFactory.getUserInstance();4 implUserDao.add();5 implUserDao.delete();6 }7 }
Java静态代理解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。