学习<主板模式>(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.  恭喜,您已完成架构设计的关键性第一步:组合。基于这项基础,便能更上层楼,逐步迈向更新鲜的创新设计了。