上篇简单介绍了(EIT造型初探),什么是EIT造型,如何设计 EIT造型,以及如何将内涵用EIT造型表达出来,今天,所要说的正如标题所言,我们所要做的正是体验一番架构师的滋味,即在EIT造型这种条件下架构师该做什么?以及如何做的问题进行讨论,看了本篇之后,你就会对EIT造型有了进一步的理解。
正如上篇所言,EIT就是一种集装箱,可以放进去各种各样的内涵,那么相对于类这一个小的造型来说,EIT的最大区别在于需要放置的不止一种内涵,而是两种内涵。众所周知,最基本的内涵来自于需求。根据基类、子类,可以划分为:基类的需求称为第一种内涵,子类的需求称为第二种内涵。
而架构师的职责就在于对于客户的需求如何能将其划分为两种内涵。下面来介绍如何划分这两种需求。这两种需求的取得会有时间的落差,第一种需求先取得,第二种需求后取得。而这种取得的邻接点就是“买主的到来”,买主到来之前称为第一种需求,买主到来之后称为第二种需求。然后将第一种需求写进去基类,第二种需求写进去子类。然后设计一个接口将基类、子类整合起来,这就是一个完整的EIT造型的设计了。这样就可以将需求知识完整的用EIT造型表现出来了。
上面我们简单的提到了根据买主到来的前后,将需求分成两种知识,第一种知识内涵写在基类,第二种知识的内涵写在子类,两者通过实现设计好的接口装配起来,就是一个完整的EIT造型。从中有几个关键点:买主到来、第一种需求(基类)、第二种需求(子类)、接口。下面,我们从生活实例中去分析这几个关键点的究竟是什么?
实例1、
火锅店卖火锅桌 上会挖一个洞,当客人到来的时候,根据客人的需求放上不同类型的火锅。
在这个案例中,买主到来之后才能知道吃什么类型的火锅,所以放置在子类中
整个需求:一个能吃火锅的桌子
买主到来:指的就是客人来了
第一种需求:桌上要放火锅
第二种需求:客人吃什么类型的火锅
接口:桌上的那个洞。
实例2、
在这个案例中,整个需求是:需要一个能在各种类型的地上都能走的汽车。买主到来之后才能提供的知识:究竟在什么地上走,选择哪种类型的轮胎
整个需求:需要一个能在各种类型的地上都能走的汽车
买主到来:指的就是客人来了
第一种需求:汽车
第二种需求:究竟在什么地上走,选择哪种类型的轮胎
接口:转轴
1、在买主到来之后,买主可以提供需求知识,然后APP开发者根据需求知识将其转换成代码。下面通过实例来分析一下。
实例、
对于多线程执行任务来说,在买主到来之后就知道该执行什么任务?如何去执行,那么APP开发者只需要根据这个需求去编写子类即可,如下图所示:
2、将T装配到E,然后执行
总之,APP开发者的职责就是:根据I编写T,然后将T转配到E上去
从上面的案例中,可以看出架构师的职责是将需求根据买主到来前后,将 其分成两种知识,设计出EI,APP开发者是根据接口开发出相应的子类,然后将子类装配到基类上执行。由此不难看出:其中有两个关键点:分、合。EIT造型表达的是架构师的先「分」与买主来了之后的「合」。
老子.道德经:「无之以为用,有之以为利。」这句话可以这样理解:无之,就是指什么都没有,设想(买主未到来);有之,就是指买主到来了。整体意思就是,在买主还没有到来之前,架构师根据是否能产生效用来设计系统,买主到来之后就可以来获利。畚箕必须先挖空(无之)才能拿来装东西(有之)。所以先无之而后始能有之。例如,客人(即买主)来之前,强龙「无之」(把锅子挖掉)得接口。一旦客人来了,地头蛇「有之」(把锅子放上去)就收钱。
为什么会想把锅子挖掉呢? 理由是:买主来了,才知道买主选择何种火锅;只好等待买主决定和挑选了火锅种类之后,才能将锅子装配上去。
通过几个实例来分析一下:
肯德基快餐店:
-- 客人来之前,厨师做<分>(即庖丁解鸡)。
-- 客人来之后,前台人员做<合>,合出半鸡或全鸡。
点菜单与食谱分离:
烹饪的知识,它分散于两种档里: 1. 食谱, 2. 点菜单。一般而言,食谱主要记载烹饪师傅的知识,而点菜单则记载买主(客人)的知识;两者相汇合之后,才能端出 一道好吃的菜肴。
从肯德基餐厅得知:
客人(买主)来之前,大厨师先做<分>的动作。同理,软件架构师也是做<分>的动作。这就扮演强龙角色。
客人(买主)来了,柜台的小弟、小妹才做<合>的动作。同理,软件App开发者也是做<合>的动作。这就扮演地头蛇角色 。
从火锅店得知:
客人(买主)来之前,先做<分>,并得接口。
从汽车得知:
福特汽车厂是强龙。福特架构(设计)师的工作是:-- 设计<I>,并分离出<E>和<T>。福特工程师的工作是:生产引擎 。
固特异轮胎厂与修车厂都是地头蛇。固特异轮胎厂工程师:生产轮胎修车厂工程师:装配轮胎
软件架构师的主要任务是做<分>,并设计接口。亦即:设计<I>,并分离出<E>和<T>。因为做<分>,创造了<E>的复用性(Reusability)。以及<T>的抽换性。 因分而复用,因合而获利。这正是老子的“无之以为用,有之以为利”。 正是基于这种EIT造型的分工:产生了从分工到外包模式。强龙设计EI,限制、控制了T的开发,然后将T的任务外包给地头蛇去做。这正是现今各大app store的来历。正是因为掌控了EI,这种外包就不会失控。所以EIT造形支持当今主流的外包模式。强龙不压地头蛇,EIT-based外包正支持此项双赢的商业模式和策略 。