电路模式:VECP(Virtual Electronic Circuit Pattern)。主要应用场景是计算机教学,文字、图形、音频、视频记录、流的传导、回放,数字电路设备模拟。它的使用约定为:电路传导按照无向图进行,电路的执行结果为y = f(x)
3.1 什么是虚电路
虚电路是物理电路与软件设计的交叉学科。它以物理电路的逻辑、技术、模式为基础,解决计算机科学中与之类似相关的软件开发问题。
3.2 虚电路的核心架构
1)无限联结:跨越对象、进程、网络的透明电路互联。
2)虚实互补、虚实互联:实现了软件虚电路与实际电路接口的相互补充与联结。
3)虚电路家族:以面向对象的思维,揭示虚电路各个组成部分的相互依存关系。
4)软件集成电路制造:通过软件设计手段,实现虚电路器件的集成复用。
5)狭义虚电路与广义虚电路:狭义虚电路解决的是与硬件紧密结合的电路问题,广义虚电路则主要通过虚电路实现实时文字、图像、媒体传输,甚至包括电路压缩、加密等环节。
6)电路事件,提供了虚电路框架行为的事件通知。
7)电路模式:在现有设计模式中增加了电路模式的概念,通过电路模式解决软件开发中遇到的类电路设计问题。
8)虚电路平台:嵌入基于面向对象语言的可视化快速开发工具。
3.3 虚电路的研究意义
软件开发中的许多实际问题,都需要借鉴自物理电路的逻辑、技术、模式。对于这些问题的解决,虚电路是一个较为优秀的选择。
3.4 虚电路所要解决的问题
1)在电子电路领域,虚电路可以替代开关、灯泡、数字门电路、实现原来需要硬件才能实现的功能。
2)在工业控制领域,虚电路可以代替众多的接口板、PLD、PLC控制器,各种现场总线,实现与之等价的功能。
3)在流媒体领域,虚电路全面支持网络流媒体传输,可以大大加快流媒体软件的开发速度。
4)在家电控制领域,虚电路可以和众多智能家电进行协同控制。
5)在电路教学领域,虚电路可以仿真、模电子电路的传导、运行。
6) 在人工智能/机器学习领域,虚电路可以传导广义虚电路电流来实现数据驱动,构造y=f(x) 的设备来模拟算法。
7)虚电路还支持网络软件及普通软件开发,一样可以提高效率,加速实现。
3.5 虚电路的连接传导理论
目前虚电路支持Delphi/C++Builder和Kylix三个开发工具。
1)电路连接 – 无向图:
一般情况下,电路的分析都会最后转化为图,而图分为有向图和无向图。有向图的连接区分方向。无向图的连接不区分方向。

电路传导是不分方向的,不可预知的,而有向图的单向传导特性是不能满足这个要求的。所以,虚电路的电路连接采用了无向图。这样,虚电路的传导实现和实际电路的传导要求就完全吻合了。
2)电路传导 – 深度优先算法:当电路发生传导时,需要遍历无向图中的所有结点。无向图支持广度优先算法和深度优先算法。下面的图显示了一个电路连接采用不同遍历算法的次序:

广度优先次序:A-B-C-D-E
深度优先次序:A-B-D-C-E
在电路传导的环境下,深度优先的算法逻辑更适合虚电路的要求和实现,所以虚电路采用了深度优先遍历算法。后期的代码实现证明深度优先算法确实较好的支持了虚电路的传导架构。
3)电路传导 – 流化:
虚电路的传导可以分为进程内传导,进程间传导,网络传导三种类型。
1〉进程内传导,传导时,数据按类型进行复制传导。
2〉进程间传导:所有数据首先进行流化,然后使用系统的IPC通信进行复制传导,在目标进程进行反流化,重新还原数据。
3〉网络传导:所有数据首先进行流化,然后使用TCP/UDP协议族进行复制传导,在目标计算机进行反流化,重新还原数据。
虚电路的传导实现了完善的流化机制。下表是虚电路流化支持的数据类型:
| 名称 | 说明 |
| Char | 字符 |
| String | 字符串 |
| Boolean | 布尔 |
| SmallInt | 8位整数 |
| Byte | 字节 |
| ShortInt | 16位整数 |
| Word | 双字节 |
| Int | 32位整数 |
| Cardinal | 四字节 |
| Int64 | 64位整数 |
| Single | 单精度浮点 |
| Double | 双精度浮点 |
| DateTime | 日期时间 |
| Array | 数组(以上数据类型的集合) |
4)电路传导 – 代理模式:
虚电路的传导在进程内部是直接的,但进程之间和跨越网络的传导,它是采用代理模式实现的,下面的图分别列出了不同情况下的传导实现:
1〉进程内部传导,直接传导(Direct):

2〉进程之间传导,通过IPC服务(IPC Service)的代理模式实现:

3〉跨越网络的传导,通过协议服务提供者(Protocol Provider),采用代理模式实现:

说明:在目前的版本中,组播代理尚未实现。