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

 它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。
 
如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦
 
这个在omco2.6版本中用户登录的session中的接口就有体现。
 
  1. package com.utstar.omco.jnti.inc;
  2.  
  3. public interface ITBusStub extends IEngineHandle
  4. {
  5.   ITAclInterface getAclInterface();
  6.    void setName(String name);
  7.    String getUUID();
  8.    int generateSID();
  9.    int getSessionCount();
  10.    ITServerSession getSession(int sid);
  11.    ITServerSession[] getAllSession();
  12.    int delSession(int sid, ITableRegChange ic);
  13.    int _onRecvResult(Msg.MsgInfo msg);
  14.    Msg.MsgInfo _onNeedExec();
  15.    int _onRecvFromSession(ITServerSession s, Msg.MsgInfo msg);
  16.    int _onRegister(Msg.ReguestRegister reg, ITableRegChange ic);
  17.    void _onUpdateRegInfo(String src, ITableRegChange ic);
  18.    int _onAddSession(ITServerSession s);
  19. }
上面的类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. public String getName()
  57. {
  58. return m_name;
  59. }
  60. public void setName(String name)
  61. {
  62. m_name = name;
  63. }
  64.  
  65. public String getUUID()
  66. {
  67. return m_uuid;
  68. }

原文地址: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. cocos2d-x C++ 判断当前平台宏定义大全

    /**************************************************************************** Copyright (c) 2010-201 ...

  2. Django Form(表单)

    前台用 get 或 post 方法向后台提交一些数据. GET方法: html示例(保存在templates文件夹中): <!DOCTYPE html> <html> < ...

  3. UVAL 4728 Squares(旋转卡壳)

    Squares [题目链接]Squares [题目类型]旋转卡壳 &题解: 听着算法名字,感觉挺难,仔细一看之后,发现其实很简单,就是依靠所构成三角行面积来快速的找对踵点,就可以省去很多的复杂 ...

  4. kafka 单机配置

    http://blog.csdn.net/jingshuigg/article/details/24439637 . su root : chown -R hadoop:hadoop version- ...

  5. [5]windows内核情景分析---进程线程

    本篇主要讲述进程的启动过程.线程的调度与切换.进程挂靠 进程的启动过程: BOOL CreateProcess ( LPCTSTR lpApplicationName,                 ...

  6. protobuf编译.proto文档

    1:在同一目录下按键盘shift+鼠标右键-->点击-->在此处打开命令窗口,打开后如下图所示 2.该目录下有person.proto文档,可以自己编写,如下 syntax = " ...

  7. Python读取excel数据类型处理

    一.python xlrd读取datetime类型数据:https://blog.csdn.net/y1535766478/article/details/78128574 (1)使用xlrd读取出来 ...

  8. Glorious Brilliance (最短路 + 带权二分图匹配)

    这是一道代码大题.一开始读错题意了,然后理解成直接看上去的那种相邻,然后想不通好久!!! 把不同联通的图分离出来,然后先预处理一下形成之后的相邻图的状态,然后根据01确定哪一些是需要更换状态的,然后建 ...

  9. plsql 代码自动补全

    1.新建一个文件,命名不限定,文件内容为自动补全内容,比如: i=INSERTu=UPDATEs=SELECTf=FROMw=WHEREo=ORDER BYd=DELETEdf=DELETE FROM ...

  10. Hive和sparksql中的dayofweek

    dayofweek在hive2.2.0开始支持 ,低版本的hive没有提供原生的dayofweek函数,有时需要用到的时候不甚方便.其实低版本的sparksql和hive中可用以下方式实现dayofw ...