第 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 ~



