PHP与Spring之间的强势接口设计:学习案例
admin
2023-06-25 15:42:15
0

高焕堂TCLUB微信讲座(2015/9/29)内容分享

从编程到设计.学习案例(1)

PHPSpring之间的强势接口设计

 

by 高煥堂(2015.10.1)


前言:

  这是高焕堂TClub微信讲座(2015/9/29)的内容,大家分享,欢迎免费加入TClub。详细请参考:http://www.cnblogs.com/SmartADT/

      大家都知道,要学好软件(或架构)设计,不是从业务或需求开始,而是从接口(Interface)设计出发,才是迅速成为有效(架构)设计师的鸟语花香之路。因为业务(或需求分析)的焦点在于流程(Business flow),而软件(架构)设计的天赋职责就在于结构(Structure),这结构是用来支撑互联网时代下的千变万化企业流程,而未来企业环境、需求与流程的<变化>是不可知的,所以才需要(架构)设计。

      因此,知道结构与流程是分别来自不同而互补的两个面向(Dimension),软件(架构)设计师必须基于两个不同视角(View)来设计架构和规划流程。因此,软件(架构)设计不是从业务(或需求)流程开始,而是从接口设计出发的,而接口不是从业务(领域)或需求抽象出来的。许多初学软件设计者常常迷失于其中,没关系的,我(高老师)陪您越过这个原野,驰聘于广阔无垠的软件世界。您可听听高老师怎么说=> 下载高老师视频(免费)

   

一、目标

  • 设计通用性(又称通用型)接口(Interface),让我们自己能掌握系统架构里的接口制定权,拥有话语权,所以是一种强势型接口。

  • 基于自己的接口,整合IWebShop、Spring和DBMS等外来平台框架,让这些外来的平台框架都成为可被我们抽换的架构性插件(Plugin)。

  • 自己制定的(通用性)接口,成为各服务器之间的必经渠道,我们可以设计抽象(父类)来实现这项接口,来监控交易(Transaction)流动和流量,例如我们可以设计一个”看门狗(watch dog)”的类。

  • 随着业务和系统的成长,将会增添更多上述的具象类(如watch dog类),逐渐形成我们自己的平台框架(Framework)了。

  • 基于自己制定的接口和框架,才能让外来平台框架成为可抽换,可新陈代谢的模块,以避免我们的成长受制于外来平台的接口和功能,确保我们能弹性成长,支撑成千上百万的业务应用功能,并稳定、永续茁壮。

 

二、从外来平台出发

  • 首先拿基于PHP的iWebShop和Spring两个外来的平台框架为例。

    PHP与Spring之间的强势接口设计:学习案例

  • 我们来将两者分离。

    PHP与Spring之间的强势接口设计:学习案例

  • 让两者便成为Loosely-Coupled。

    PHP与Spring之间的强势接口设计:学习案例

  • 这项目目标实现途径就是:设计自己的<通用型接口>;又称为<通用性接口>。

    PHP与Spring之间的强势接口设计:学习案例

 

三、<通用型接口>的角色

  • 从业务应用(App)开发的视角来看,我们会在iWebShop框架里撰写特殊性业务逻辑,成为iWS App软件,并调用Sring框架里的共享性企业逻辑(Business logic, or Business object),以及DB Server里的数据。

     PHP与Spring之间的强势接口设计:学习案例 

  • 最典型的调用流程是:

     PHP与Spring之间的强势接口设计:学习案例 

  • 运用proxy-stub设计模式(Design pattern),让这iWS App可以掌握跨界的通信接口。

        PHP与Spring之间的强势接口设计:学习案例

 

  • 这个iWS App就包含两部分,例如:iwsActivity(扮演proxy角色)和iwsService(扮演stub角色)。其分别置于分界线的两边。

     PHP与Spring之间的强势接口设计:学习案例    

  • 最典型的调用流程是:

     PHP与Spring之间的强势接口设计:学习案例

  • 设计我们自己的通用性接口:

     PHP与Spring之间的强势接口设计:学习案例  

  • 其典型的调用流程是:

     PHP与Spring之间的强势接口设计:学习案例

 

四、<通用性接口>的设计要点:应用<工厂设计模式(Factory Pattern)

  • 设计一个absFactory父类。

     PHP与Spring之间的强势接口设计:学习案例

  • 设计一个BridgeLib模块。

        PHP与Spring之间的强势接口设计:学习案例 

  • 其典型的调用流程,分为两的步骤:1)获取Service;2)透过通用性接口来调用Service。

 

五、<通用性接口>的调用步骤(1):获取Service

  • 步骤<1a>:透过BridgeLib模块调用Factory,来创建iwsFactory对象,然后回传(return)此对象的通用性接口。

     PHP与Spring之间的强势接口设计:学习案例(步骤<1a>)

  • 步骤<1b>:BridgeLib模块调用myFactory,来创建iwsService对象,然后回传(return)此对象的通用性接口。

     PHP与Spring之间的强势接口设计:学习案例(步骤<1b>)

六、<通用性接口>的调用步骤(2)透过通用性接口来调用Service

  • 在上一小节的步骤<1b>里,BridgeLib将iwsService的通用性接口回传给iwsActivity。

  • 于是,在这步骤<2>里,iwsActivity就透过通用性接口调用到iwsService和Spring框架了。

     PHP与Spring之间的强势接口设计:学习案例(步骤<2>)

七、<通用性接口>的优越特性

  • 通用性接口是我们自己设计和掌握的,让iWebShop与Spring变成松偶合(loosely-coupled)。

  • 因此,iWebShop/iwsActivity除了Spring之外,还可以搭配其它后台框架,例如GAE云平台等。

  • 只要我们的通用性接口维持不变,iWebShop/iwsActivity等前端的全部代码都可以不受影响。不但可以节省改版成本、快速改版之外、系统升级过程中的稳定度,还具备衔接到各式各样云平台的无限扩充能力。

 

PS. 这是高焕堂TClub微信讲座(2015/9/29)的内容,大家分享,欢迎免费加入TClub。详细请参考:http://www.cnblogs.com/SmartADT/


~ End ~


相关内容

热门资讯

电视为什么一直闪屏 由于电源电压不稳定或电源供电不足的缘故、电视分辨率的故障、电视存在周围有电磁干扰的缘故、电视的刷新频...
专访塞尔维亚总统武契奇 塞尔维亚总统武契奇首次对中国进行国事访问,接受《高端访谈》专访。他说,这是他政治生涯中最重要的一次访...
大理宾川:六一儿童节前夕,警方... “大风在刮,大雪在下。烽火中拼杀,危难的关头热血护中华。不怕流血,不怕牺牲。只为守护家,先烈用生命换...
杀入固态电池赛道,5150 亿... 农夫山泉创始人、前中国首富钟睒睒,又有新动作! 近日,钟睒睒通过旗下养生堂战略投资固态电池材料企业智...
南京测试机器人楼宇外立面清洗,... 扬子晚报网5月29日讯(记者 张可)南京存量楼宇数量庞大、外立面日常养护、翻新清洁需求旺盛。长期以来...
特朗普推迟就伊朗相关协议作最终... 新华社华盛顿5月29日电(记者黄强 徐剑梅)据美国《纽约时报》29日援引一名不愿透露姓名的政府高级官...
字节跳动AI4S团队调整,由杨... 有传言称,字节Seed旗下AI4S团队,正在讨论新一轮组织调整,包括从字节分拆的可能性。 5月29日...
算启新程 智领未来 中国移动亮... 蓬勃盛夏,智潮奔涌。5月28日,2026世界智能产业博览会(以下简称“智博会”)在天津盛大开幕。作为...
原创 v... PChome 5月29日评测,作为一个手机相册里存着几千张Live图的人,vivo S系列一直是我的...
神舟二十一号航天员乘组平安抵京 据中国载人航天工程办公室消息,圆满完成神舟二十一号载人飞行任务的航天员乘组,于北京时间2026年5月...