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

 它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。
 
如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦
 
这个在omco2.6版本中用户登录的session中的接口就有体现。
 
 package com.utstar.omco.jnti.inc;  

 public interface ITBusStub extends IEngineHandle
{
  ITAclInterface getAclInterface();
   void setName(String name);
   String getUUID();
   int generateSID();
   int getSessionCount();
   ITServerSession getSession(int sid);
   ITServerSession[] getAllSession();
   int delSession(int sid, ITableRegChange ic);
   int _onRecvResult(Msg.MsgInfo msg);
   Msg.MsgInfo _onNeedExec();
   int _onRecvFromSession(ITServerSession s, Msg.MsgInfo msg);
   int _onRegister(Msg.ReguestRegister reg, ITableRegChange ic);
   void _onUpdateRegInfo(String src, ITableRegChange ic);
   int _onAddSession(ITServerSession s);
}
上面的类ITBusStub,就是一个stub类,它的作用主要是用于继承一个接口类,然后它的实现类只需要通过实现它这个接口就可以,
实现需要调用的方法。BusStub是它的实现类。
 public class BusStub extends AbsEngineHandle implements ITBusStub,IMonitor
{
public static interface MsgPriorityStrategy
{
public int onRecvResultPriority(Msg.MsgInfo msg);
public int onRecvFromSessionPriority(ITServerSession s, Msg.MsgInfo msg);
} public static class ResultPriorMsgPriorityStrategy implements MsgPriorityStrategy
{
public int onRecvResultPriority(Msg.MsgInfo msg)
{
return DefaultEngine.PRIO_HIGH;
} public int onRecvFromSessionPriority(ITServerSession s, Msg.MsgInfo msg)
{
return DefaultEngine.PRIO_DEFAULT;
}
} AtomicInteger m_curSessionIdx = new AtomicInteger(1); IMsgQueue<Msg.MsgInfo> m_cmdQue = new MsgQueue<Msg.MsgInfo>("cmd");
IMsgQueue<Msg.MsgInfo> m_resultQue = new MsgQueue<Msg.MsgInfo>("result"); ConcurrentHashMap<Integer, ITServerSession> m_svc = new ConcurrentHashMap<Integer, ITServerSession>(); NotifyReg m_reg = new NotifyReg(); ITDispatch m_dispatch; ITAclInterface m_acl = ITAclInterface.s_defaultAcl;
String m_uuid = UUID.randomUUID().toString();
String m_name; MsgPriorityStrategy m_msgPriorityStrategy; LongStatPrp sp_cmdnum = new LongStatPrp("recv cmd",0);
LongStatPrp sp_resultnum = new LongStatPrp("send result",0);
LongStatPrp sp_notifynum = new LongStatPrp("send notify",0); private static final Log logger = LogFactory.getLog("comm"); public BusStub(String name)
{
this(name, null);
} public BusStub(String name, MsgPriorityStrategy msgPriorityStrategy)
{
m_name = name;
m_msgPriorityStrategy = msgPriorityStrategy;
} public String getName()
{
return m_name;
}
public void setName(String name)
{
m_name = name;
} public String getUUID()
{
return m_uuid;
}

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

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

  1. 什么是存根类 Stub

    转:http://www.cnblogs.com/cy163/archive/2009/08/04/1539077.html 存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的.      ...

  2. 存根类STUB

    当我们创建一个指定各种方法集合的接口时,我们可以考虑使用"存根”STUB,“存根”就是用空方法体实现该接口中所有方法的类,这样我们就可以通过继承该“存根”创建一个实现该接口的类,这样一来,该 ...

  3. JAVA基础知识(七)存根类

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

  4. dubbo的本地存根(Stub)

    dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provid ...

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

    ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...

  6. Java动态加载类在功能模块开发中的作用

    Java中我们一般会使用new关键字实例化对象然后调用该对象所属类提供的方法来实现相应的功能,比如我们现在有个主类叫Web类这个类中能实现各种方法,比如用户注册.发送邮件等功能,代码如下: /* * ...

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

    1.void CCOMDDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel();} 如果把CDialog::OnCa ...

  8. java.util.Stack类中 empty() 和 isEmpty() 方法的作用

    最近在学习算法和数据结构,用到Java里的Stack类,但程序运行结果一直和我预料的不一样,网上也没查清楚,最后查了API,才搞明白. java.util.Stack继承类 java.util.Vec ...

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

    立即重启计算机      echo "b" > /proc/sysrq-trigger 立即关闭计算机      echo "o" > /proc/ ...

随机推荐

  1. JAVA编程思想学习笔记5-chap13-15-斗之气5段

    1.String对象不可变,一旦发生字符变换或者变长度,一定是新建了一个String private final char value[]; 2.字符串+与+=:唯二操作符重载 "aaa&q ...

  2. 回车和刷新以及Ctr+F5的区别

    回车(url跳转)主要是判断本地缓存文件的Expires的有效时间,如果有效则直接使用客户端缓存 不在提交到HTTP服务器 F5 Expires设置不再起效果,只有Last-Modified/ETag ...

  3. 201803020001-多重MACD图.png

  4. why big data

    很多人都知道大数据很火,就业很好,薪资很高,想往大数据方向发展.但该学哪些技术,学习路线是什么样的呢?用不用参加大数据培训呢?如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么大讲台老师就想 ...

  5. [IDE] ECLIPSE取消自动更新

    eclipse自动更新的取消方法: window --> preferences --> General --> Startup and Shutdown --> 在列表中找到 ...

  6. QT自定义消息

    1.派生QAbstractNativeEventFilter,重写nativeEventFilter()函数 #ifndef CMYMESSAGEHANDLER_H #define CMYMESSAG ...

  7. Java类访问控制

      public protected default private 本类 可见 可见 可见 可见 本类所在包 可见 可见 可见 不可见 其他包中的子类 可见 可见 不可见 不可见 其他包中的非子类 ...

  8. jQuery事件--keypress([[data],fn])和trigger(type,[data])

    keypress([[data],fn]) 概述 当键盘或按钮被按下时,发生 keypress 事件 keypress 事件与 keydown 事件类似.当按钮被按下时,会发生该事件.它发生在当前获得 ...

  9. JavaScript--函数、匿名函数和自执行函数详解

       函数的声明及调用 1.函数的声明格式:        function 函数名([参数1],[参数2],.....){          //函数体代码          [return 返回值 ...

  10. git使用遇到的坑

    把一个完整项目提交到github上步骤以及注意事项 Git的安装就不说了. 第一步:mkdir/cd 我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开 ...