一、目标
主板模式提供两种接口(Interface),让我们自己能掌握系统架构里的接口制定权,拥有话语权,所以是一种强势型设计模式(Design Pattern)。基于自己的主板接口,整合PHP(如IWebShop)、Spring和DBMS等外来平台框架,让这些外来的平台框架都成为可被我们抽换的架构性碎片或插件(Plugin)。
基于自己主板而制定(通用性)接口,成为各服务器之间的必经渠道,我们可以有效监控交易(Transaction)流动和流量,例如我们可以设计一个”看门狗(watch dog)”的类来监控交易流量。
随着业务和系统的成长,将会在自己的主板上增添更多的类(如watch dog类),逐渐形成我们自己的平台框架(Framework)了。基于自己制定的主板、接口和框架,才能让外来平台框架成为可抽换,可新陈代谢的模块,以避免我们的成长受制于外来平台的接口和功能,确保我们能弹性成长,支撑成千上百万的业务应用功能,并稳定、永续茁壮。
二、采取主板模式,组合外来的平台
首先拿基于PHP的iWebShop和Spring两个外来的平台框架为例。
我们来将两者分离,如下图:
让两者便成为Loosely-Coupled,,如下图:
首先,设计自己的<通用性接口>,如下图:
三、循主板模式,设计父类来实现(Implement)接口
从业务应用(App)开发的视角来看,我们会在iWebShop框架里撰写特殊性业务逻辑,成为iWS App软件,并调用Sring框架里的共享性企业逻辑(Business logic, or Business object),以及DB Server里的数据。这iWS App可以掌握跨界的通信接口,例如iWS App可包含两部分:iwsActivity(扮演proxy角色)和iwsService(扮演stub角色)。其分别置于分界线的两边。如下图:
最典型的调用流程是:
定义我们自己的通用性接口,并且撰写抽象父类去实现它,如下图:
其典型的调用流程是:
上述通用性接口和抽象父类的组合,就成为软件主板了。如下图:
这是大家所熟悉、典型的软件主板结构了。
四、工厂设计模式(Factory pattern)与主板模式的结合
我们可以在软件主板里,增添一个工厂模式(Factory pattern),成为更精致、更具有智慧的软件主板了。于是,设计一个absFactory父类。如下图:
此外,再增添一个BridgeLib模块,如下图:
就成为一个智能、有效的软件主板了。如下图:
其典型的调用流程,分为两的步骤:1)获取Service;2)透过通用性接口来调用Service。
五、主板的调用步骤(1):获取Service
- 步骤<1a>:透过BridgeLib模块调用Factory,来创建iwsFactory对象,然后回传(return)此对象的通用性接口。
(步骤<1a>)
- 步骤<1b>:BridgeLib模块调用myFactory,来创建iwsService对象,然后回传(return)此对象的通用性接口。
(步骤<1b>)
六、主板的调用步骤(2):透过通用性接口来调用Service
- 在上一小节的步骤<1b>里,BridgeLib将iwsService的通用性接口回传给iwsActivity。
- 于是,在这步骤<2>里,iwsActivity就透过通用性接口调用到iwsService和Spring框架了。
(步骤<2>)
七、主板的优越特性
- 通用性接口是我们自己设计和掌握的,让iWebShop与Spring变成松偶合(loosely-coupled)。
- 因此,iWebShop/iwsActivity除了Spring之外,还可以搭配其它后台框架,例如GAE云平台等。
- 只要我们的通用性接口维持不变,iWebShop/iwsActivity等前端的全部代码都可以不受影响。不但可以节省改版成本、快速改版之外、系统升级过程中的稳定度,还具备衔接到各式各样云平台的无限扩充能力。
~ End ~