Lemap 发表于 2013-1-6 02:23:04

放大器(或集线器)模式(Hub)

<div id="cnblogs_post_body">  集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。也就是说是“一个变多个”,如USB HUB,从USB接入后分多个USB接出。对此有一个比较容易理解的应用,那就是日志输出。

  首先定义一个日志输出接口:

    http://pic002.cnblogs.com/images/2012/448102/2012102616532338.jpg
  再实现三个类:输出到日志文件类、输出到控制台类、输出到数据库类。
    http://pic002.cnblogs.com/images/2012/448102/2012102616564676.jpg
然后就可以日志输出了。如:
      ILog file = new FileLog();
      file.Output("这个信息输出到日志文件。");
或:
      ILog console = new ConsoleLog();

      console.Output("这个信息输出到控制台。");
或:
      ILog database = new DatabaseLog();
      database.Output("这个信息输出到数据库。");
如果此时,日志需要即输出到控制台,又需要记录到日志文件。那就得用Hub模式了。
http://pic002.cnblogs.com/images/2012/448102/2012102617270529.jpg
跟节点(这里的节点就是输出到日志文件类、输出到控制台类、输出到数据库类等实现了ILog的类)一样实现ILog接口,同时又包含多个节点(输出)。 结构图为:
      http://pic002.cnblogs.com/images/2012/448102/2012102617471372.jpg
代码结构图为:
      
      http://pic002.cnblogs.com/images/2012/448102/2012102617531071.jpg
INode代码:
<div class="cnblogs_Highlighter">    public interface INode    {      void DoSomething();    }
页: [1]
查看完整版本: 放大器(或集线器)模式(Hub)