博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
放大器(或集线器)模式(Hub)
阅读量:7069 次
发布时间:2019-06-28

本文共 1685 字,大约阅读时间需要 5 分钟。

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

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

    

  再实现三个类:输出到日志文件类、输出到控制台类、输出到数据库类。

    

然后就可以日志输出了。如:

      ILog file = new FileLog();

      file.Output("这个信息输出到日志文件。");

或:

      ILog console = new ConsoleLog();

      console.Output("这个信息输出到控制台。");

或:

      ILog database = new DatabaseLog();

      database.Output("这个信息输出到数据库。");

如果此时,日志需要即输出到控制台,又需要记录到日志文件。那就得用Hub模式了。

跟节点(这里的节点就是输出到日志文件类、输出到控制台类、输出到数据库类等实现了ILog的类)一样实现ILog接口,同时又包含多个节点(输出)。 结构图为:

      

代码结构图为:

      

      

INode代码:

public interface INode    {        void DoSomething();    }

Hub代码:

public class Hub : INode    {        private List
_nodes = new List
(); public Hub(params INode[] nodes) { _nodes.AddRange(nodes); } public void DoSomething() { foreach (var item in _nodes) { item.DoSomething(); } } }

此时,我们已经可以写出Log的Hub类了,实现代码如下:

public class LogHub : ILog  // 实现跟节点一样的接口ILog    {        private List
_logs = new List
();  //包含多个输出节点 public LogHub(params ILog[] logs) { _logs.AddRange(logs); } public void Output(string log) {
       // 逐个输出 foreach (var item in _logs) { item.Output(log); } } }

轻松实现多方式输出,如实现“即输出到控制台,还需要记录到日志文件”如下:

      ILog loger = new LogHub(new ConsoleLog(), new FileLog());

      loger.Output("这个信息即输出到控制台,还需要记录到日志文件。");

转载于:https://www.cnblogs.com/lemap/archive/2012/10/26/2741613.html

你可能感兴趣的文章
RabbitMQ入门-Topic模式
查看>>
poj 2777 Count Color(线段树区间更新)
查看>>
Java数据结构与算法(5) - ch05链表(LinkList)
查看>>
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
查看>>
刚刚接触python的感想
查看>>
modelsim使用常见问题及解决办法集锦 ②
查看>>
常用的第三方库
查看>>
java 操作elasticsearch之搭建测试项目环境
查看>>
iOS-图文表并茂,手把手教你GCD
查看>>
python之logging模块
查看>>
让Android Studio支持系统签名
查看>>
3.5 Templates -- Binding Element Attributes(绑定元素属性)
查看>>
jquery常用技巧及常用方法列表集合
查看>>
Microsoft Dynamics AX 2012 正式版虚拟机
查看>>
iOS-CALayer图片淡入淡出动画
查看>>
Python学习笔记
查看>>
Oracle
查看>>
MAT(MemoryAnalyzerTool)
查看>>
分享实用的JavaScript代码库
查看>>
46. Permutations
查看>>