一、代理模式

  代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后 处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的 对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 
  静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 
  动态代理:在程序运行时,运用反射机制动态创建而成。

二、静态代理模式

 1 package com.swust.dao
 2 /** 
 3 * 定义一个账户接口 
 4 *  
 5 * @author Administrator 
 6 *  
 7 */  
 8 public interface Count {  
 9 // 查看账户方法  
10 public void queryCount();  
11 // 修改账户方法  
12 public void updateCount();  
13 }  
14 
15 package com.swust.dao.imple
16 public class CountImpl implements Count {  
17 @Override  
18 public void queryCount() {  
19      System.out.println("查看账户方法...");  
20 }  
21 @Override  
22 public void updateCount() {  
23      System.out.println("修改账户方法...");  
24 }  
25 }  
26 
27 public class CountProxy implements Count {  
28     private CountImpl countImpl;  
29   
30     /** 
31      * 覆盖默认构造器 
32      *  
33      * @param countImpl 
34      */  
35 public CountProxy(CountImpl countImpl) {  
36         this.countImpl = countImpl;  
37     }  
38   
39 @Override  
40 public void queryCount() {  
41         System.out.println("事务处理之前");  
42         // 调用委托类的方法;  
43         countImpl.queryCount();  
44         System.out.println("事务处理之后");  
45 }  
46   
47 @Override  
48 public void updateCount() {  
49 System.out.println("事务处理之前");  
50 // 调用委托类的方法;  
51 countImpl.updateCount();  
52 System.out.println("事务处理之后");  
53 }  
54 }  
55 
56 
57 
58 package net.battier.test;  
59       
60 import net.battier.dao.impl.CountImpl;  
61 import net.battier.dao.impl.CountProxy;  
62       
63 /** 
64  *测试Count类 
65 *  
66 * @author Administrator 
67 *  
68 */  
69 public class TestCount {  
70      public static void main(String[] args) {  
71             CountImpl countImpl = new CountImpl();  
72             CountProxy countProxy = new CountProxy(countImpl);  
73             countProxy.updateCount();  
74             countProxy.queryCount();  
75       
76     }  
77 }  
View Code

相关文章:

  • 2022-01-20
  • 2021-12-26
  • 2021-08-22
  • 2022-12-23
  • 2021-12-03
  • 2022-01-20
  • 2021-06-28
猜你喜欢
  • 2021-05-31
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2021-11-09
  • 2021-09-17
相关资源
相似解决方案