存根类(stub) 是什么意思?有什么作用?(转)

存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的。

它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。

如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦

这个在omco2.6版本中用户登录的session中的接口就有体现。

 1 package com.utstar.omco.jnti.inc;
 2
 3
 4 public interface ITBusStub extends IEngineHandle
 5 {
 6       ITAclInterface getAclInterface();
 7       void setName(String name);
 8       String getUUID();
 9       int generateSID();
10       int getSessionCount();
11       ITServerSession getSession(int sid);
12       ITServerSession[] getAllSession();
13       int delSession(int sid, ITableRegChange ic);
14       int _onRecvResult(Msg.MsgInfo msg);
15       Msg.MsgInfo _onNeedExec();
16       int _onRecvFromSession(ITServerSession s, Msg.MsgInfo msg);
17       int _onRegister(Msg.ReguestRegister reg, ITableRegChange ic);
18       void _onUpdateRegInfo(String src, ITableRegChange ic);
19       int _onAddSession(ITServerSession s);
20 }  

上面的类ITBusStub,就是一个stub类,它的作用主要是用于继承一个接口类,然后它的实现类只需要通过实现它这个接口就可以,

实现需要调用的方法。BusStub是它的实现类。

 1 public class BusStub extends AbsEngineHandle implements ITBusStub,IMonitor
 2 {
 3     public static interface MsgPriorityStrategy
 4     {
 5         public int onRecvResultPriority(Msg.MsgInfo msg);
 6         public int onRecvFromSessionPriority(ITServerSession s,         Msg.MsgInfo msg);
 7     }
 8
 9     public static class ResultPriorMsgPriorityStrategy implements MsgPriorityStrategy
10     {
11         public int onRecvResultPriority(Msg.MsgInfo msg)
12         {
13             return DefaultEngine.PRIO_HIGH;
14         }
15
16         public int onRecvFromSessionPriority(ITServerSession s, Msg.MsgInfo msg)
17         {
18             return DefaultEngine.PRIO_DEFAULT;
19         }
20     }
21
22     AtomicInteger m_curSessionIdx = new AtomicInteger(1);
23
24     IMsgQueue<Msg.MsgInfo> m_cmdQue = new MsgQueue<Msg.MsgInfo>("cmd");
25     IMsgQueue<Msg.MsgInfo> m_resultQue = new MsgQueue<Msg.MsgInfo>("result");
26
27     ConcurrentHashMap<Integer, ITServerSession> m_svc = new ConcurrentHashMap<Integer, ITServerSession>();
28
29     NotifyReg m_reg = new NotifyReg();
30
31     ITDispatch m_dispatch;
32
33     ITAclInterface m_acl = ITAclInterface.s_defaultAcl;
34     String m_uuid = UUID.randomUUID().toString();
35     String m_name;
36
37     MsgPriorityStrategy m_msgPriorityStrategy;
38
39     LongStatPrp sp_cmdnum = new LongStatPrp("recv cmd",0);
40     LongStatPrp sp_resultnum = new LongStatPrp("send result",0);
41     LongStatPrp sp_notifynum = new LongStatPrp("send notify",0);
42
43     private static final Log logger = LogFactory.getLog("comm");
44
45     public BusStub(String name)
46     {
47         this(name, null);
48     }
49
50     public BusStub(String name, MsgPriorityStrategy msgPriorityStrategy)
51     {
52         m_name = name;
53         m_msgPriorityStrategy = msgPriorityStrategy;
54     }
55
56
57     public String getName()
58     {
59         return m_name;
60     }
61     public void setName(String name)
62     {
63         m_name = name;
64     }
65
66     public String getUUID()
67     {
68         return m_uuid;
69     }  

原文地址:http://www.2cto.com/kf/201310/249266.html

存根类(stub) 是什么意思?有什么作用?(转)

时间: 2024-10-02 15:30:29

存根类(stub) 是什么意思?有什么作用?(转)的相关文章

随笔⑧ java中的存根类 --- Stub

java中的存根类 --- Stub ① 存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的. 它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法.但是一个类从业务来说,可能只需要其中一两个方法.如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法.而如果通过继承存根类就实现接口,就免去了这种麻烦.

dubbo的本地存根(Stub)

dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provider方提供的dubbo服务时,客户端生成 Proxy 实例,这个Proxy实例就是我们正常调用dubbo远程服务要生成的代理实例,然后消费者这方会把 Proxy 通过构造函数传给 消费者方的Stub ,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy.会通过代理类去完成这个调用

serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Serializable其实是一个空接口 package java.io; public interface Serializable { } Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化. 什么情况下需要序列化 a)当你想把的内存中的对象写入到硬

CDialog类中OnCancel()、OnInitDialog()作用

1.void CCOMDDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel();} 如果把CDialog::OnCancel();注释掉,那么点击按钮ESC或者鼠标点击X将无法关闭整个窗口. 2.BOOL CTestDlg::OnInitDialog(){CDialog::OnInitDialog();}表示CTestDlg这个类调用的是CDialog类的OnInitDialog()函数(初始化函数).主应用程序

探究@property、@synthesize、@dynamic、readonly在类、分类、协议中的作用

@protocol StudentProtocol /** 在类里只会生成setter.getter方法的声明, 系统将不会自动生成对应属性的setter.getter方法的实现和成员变量 */ @property (nonatomic, assign) NSInteger age; @end @interface Student : NSObject <StudentProtocol> //打印日志 + (void)printTestInfo; /** 1.生成属性name 2.生成name

自定义UIBtton类后,在@implementation重写方法的作用

1 /** 2 * 用来自定义imageView的尺寸和位置 (contentRect等于按钮的bounds) 3 */ 4 - (CGRect)imageRectForContentRect:(CGRect)contentRect { 5 return CGRectMake((contentRect.size.width - 40) * 0.5, 23, 40, 46); 6 } 7 8 /** 9 * 重写此方法后(不写代码),点击后就没有highlight的效果 10 */ 11 -(vo

类linux系统/proc/sysrq-trigger文件功能作用

立即重启计算机      echo "b" > /proc/sysrq-trigger 立即关闭计算机      echo "o" > /proc/sysrq-trigger 导出内存分配的信息    echo "m"  > proc/sysrq-trigger        (可以用/var/log/message查看)Outputs memory statistics to the console 导出当前CPU寄存器信息和

Android的Framework分析---5 ActivityManager分析

ActivityManager是android框架的一个重要部分,它负责一新ActivityThread进程创建,Activity生命周期的维护,管理系统中的Acitvity的状态切换. 这边内容还有更多内容,详细请参看ActivityManager.java ,ActivityMangaerNative.java 和SystemServcer.java 文件. 这几个的类的关系如下: 上图很清楚地描述了ActivityManager框架的几个主要类之间的关系,我们做应用开发接触很多的其实就是A

java rmi浅谈

首先比较下RPC和RMI的差别: 首先java提供了RMI的api,jdk1.5之后虚拟机自动生成两个类:存根类stub和骨架类skelton. stub是给客户端的,当客户端调用远程对象的一个方法时,实际上是调用本地存根对象的相应方法.skelton负责在服务端为远程对象接受客户端的请求.RMI必须要有JVM支持,所以,如果C,S都使用java开发,可以考虑使用RMI. RPC可以跨语言,客户端请求参数中就带有需要调用的类,方法及参数 -----------------------------