首页 > 代码库 > 存根类(stub) 是什么意思?有什么作用?(转)

存根类(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