java 静态代理的主要特征就是,代理类和委托类要实现同样的接口。在调用接口方法的时候,对外提供一个实例工厂对象。

静态代理类优缺点 

代理类和委托类具有相同的接口,但是委托类才是直正的接口实现者,代理类只是 调用 委托类的相关方法来提供特定的服务,
优点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。 
缺点: 
1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。 
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。 

 

1 /*
2  * 代理类和委托类具有相同的接口,但是委托类才是直正的接口实现者,代理类只是 调用 委托类的相关方法来提供特定的服务,
3  * 代理类可以为委托类预处理信息,把信息传递给委托类处理并进行事后处理。
4  *
5  */
6 public interface ImplBook {
7     public void borrow(User user);
8     public void returnBook(User user);
9 }
接口
 1 public class Library implements ImplBook{
 2 
 3     @Override
 4     public void borrow(User user) {
 5         System.out.println(user.getUname()+"从图书馆借书");
 6         
 7     }
 8 
 9     @Override
10     public void returnBook(User user) {
11         System.out.println(user.getUname()+"还书");
12         
13     }
14 
15 }
委托类
 1 public class LibraryManager implements ImplBook{
 2     private Library library = new Library();
 3     @Override
 4     public void borrow(User user) {
 5         System.out.println("图书管理员同意借书前……"+user.getUname()+"登记");
 6         library.borrow(user);
 7         System.out.println("图书管理员同意借书后……"+user.getUname()+"离开");
 8     }
 9     @Override
10     public void returnBook(User user) {
11         System.out.println(user.getUname()+"还书前登记 ");
12         library.returnBook(user);
13         System.out.println(user.getUname()+"还书后离开");
14     }
代理类
 1 public class Client {
 2     public static void main(String[] args) {
 3         User user = new User();
 4         user.setUname("xiaoMing");
 5         user.setId("I08002726");
 6         
 7         LibraryManager libraryManager = new LibraryManager();
 8         libraryManager.borrow(user);
 9         libraryManager.returnBook(user);
10     }
11 }
测试类

 

 

 

posted on 2015-01-27 17:27  风流书生  阅读(230)  评论(0编辑  收藏  举报