学习<主板模式>(Motherboard Pattern)
by 高煥堂
其实,主板模式的实践技术是很简单的。只要熟悉接口(Interface)定义、父类(Superclass)、和抽象函数(Abstract function)就可以了。现在,请您依循下述步骤来演练主板模式的实践或应用。
Step-1. 定义主板的接口。最简单的主板,一定有接口,如下图:

就以Java来定义这个接口,此Java代码如下:
// 定义通用性的ISP接口
//------------------------------------------------------------
package ws.service;
public interface CI {
String execute (int code, String data );
}
// End
Step-2. 写个实现类。有了接口之后,大家很习惯想到写个类(Class)来实现(Implement)它。如下图:

就以Java来撰写这个实现类,其Java代码如下:
// 撰写一个实现类(如”Service”)来支持CI接口
//----------------------------------------------------------------------
package ws.service;
public abstract class Service implements CI{
public String execute(int code, String data) {
// 实现代码
}
}
// End
Step-3.转变为抽象类。刚才的Service是一个具象(Concrete)类。现在,对它添加一个抽象(Abstract)函数:onExecute()。于是,转变成为一个抽象类来实现CI接口了。如下图:
于是修改Java代码如下:
// 撰写一个实现类(如”Service”)来支持CI接口
//-------------------------------------------------------------
package ws.service;
public abstract class Service implements CI{
public String execute(int code, String data) {
return onExecute(code, data) ;
}
abstract protected String onExecute (int code, String data) ;
}
// End
此抽象函数(又称为虚函数)成为这个抽象类的另一个接口了,我们特别称它为:<I>接口。

Step-4. <简单主板>完成了。此时,您已经完成了一个简单的软件主板了。如下图:

这相当于下图:

Step-5. 使用主板,开始进行组合了。此时,可設計一個子類,並且裝配到主板的<I>接口上。如下图:

在电脑执行时,主板的execute()函数调用到抽象函数onExecute()¸然后调用到子类的onExecute()具象函数的实现代码。如下图:
这个子类就是一个外围设备,受到主板的调用和控制,所以才称为<主>版,其扮演了系统的主控者角色。
Step-6. 继续扩充,组合更多外围设备。此时,可設計一個具象類,並且裝配到CI接口上。如下图:

这就如同电脑硬件系统里的主板,组合了鼠标、显示器等各种外围设备。如下图:
Step-7. 继续扩充,组合更多外围设备。此时,還可以繼續擴充,無限創新和組合。如下图:

例如,在大数据潮流下,不仅仅从自己身边的数据库(DB)读取数据,还常常从远距的云平台上读取各种格式的大数据。如下图:

这就如同手机里的主板,组合(控制)了甲虫、健康仪器等各种外围设备。如下图:

Step-8. 恭喜,您已完成架构设计的关键性第一步:组合。基于这项基础,便能更上层楼,逐步迈向更新鲜的创新设计了。