第 2 天

框架开发者学习指南(Day-02)

-- 活用主板模式(MB Pattern)

 

学习步骤:

Step 2.1 在前面的第1天的学习内容里,你已经孰悉典型的主板模式了,请复习一下。如图:

(图2-1)

Step 2.2 再复习一下这主板模式里的详细逻辑和代码结构。如下图:

(图2-2)

Step 2.3 上图里的ServCTRL类和ISP接口,两者可以合并在一起。也就是,将ISP接口并入到ServCTRL类哩。于是,上图的执行逻辑,与下图是完全一样的,只是结构不同而已。如下图:

    (图2-3)

  两个类之间是<<extends>>关系。要特别留意的是,这个<<extends>>关系

表达了两者之间是<控制者/被控制者>之控制关系,而不是一般的继承关系。

 

Step 2.4 其中的抽象函数(或称为虚函数):abstract onExecute()就是<I>接口了。如下图:

 (图2-4) 

Step 2.5 于是,我们得到主板模式的一种新结构。执行逻辑一样,只是结构不同而已。如下图:

(图2-5)

Step 2.6 接下来,请你扮演<App开发者>的角色,以Java撰写myActivity子类里的代码。这myActivity类和myService类都成为App的一部份了。如下图:

(图2-6)

Step 2.7 由myActivity来创建myService类的对象。如下图:

(图2-7a)

  此时,myActivity会调用ServCTRL类的构造式(Constructor)来创建ServCTRL的对象,这<T>与<E>两个对象就结合在一起了。于是,myActivity就可参考到myService的对象。如下图:

(图2-7b)

Step 2.8  由于myService与ServCTRL两者之间是<<extends>>关系,其myService与ServCTRL两个对象已经结合在一起了,myActivity就能调用ServCTRL的execute()函数,进而经由<I>接口而调用到myService的onExecute()函数了。如下图:

(图2-8)

Step 2.9 接着,将ServCTRL类的excute()函数单独定义在一个ISC接口里,这可避免myActivity调用到ServCTRL里的其他函数,如下图:

(图2-9)

Step 2.10 实操演练:在Android平台上,将上述个步骤,以Java来进行编程,将其落实为代码,并实际执行之。 

Step 2.11 观摩与讨论:先听高焕堂老师的视频微课,其详细讲解父类(Super class)与接口(Interface)的设计方法和技能。观摩的视频微课,包括:

    

  微课-1(请点击此图,立即体验)         微课-2(请点击此图,立即体验)

   

   微课-3(请点击此图,立即体验)          微课-4(请点击此图,立即体验)

 

1. 在学习微课和观摩技术的过程中,可随时与ADT老师群一起讨论交流。

2. 例如,讨论ListView框架里,其父类是如何设计出来的?

3. 其API是否为强势型API?

4. 为什么像Google掌握了<I>制定权,就拥有话语权,立足于<强龙>地位呢?

 

~ End ~