上篇博客谈到了TM模式在Android中的使用情况,本篇博客继续讨论Android中常用到的Factory(工厂)模式。
一、Factory(工厂)模式
先上factory(工厂)模式uml图形:
工厂设计模式分为两部分,生产者(factory)与消费者(product),每一个ConProduct都是由ConCreater创建出来的,整个工厂设计模式是由两个EIT造型组合而成的。
(1) FactoryClass的onOptionMethod()方法调用了create()函数,
(2) FactoryClass的create()函数通过IOC机制回调ConcreateClass类里面的create()函数从而拿到ConProduct的对象;
(3) ConProduct就作为一个消费者被ConcreateClass创建出来了。
二、Android中常见的FM(Factory)设计模式:
Android中我们也经常用到FM设计模式,只不过平时我们只管写代码,而很少去发掘其中的设计模式,现在就拿常见的Android代码来看看FM设计模式的应用:
Android中经常用到的界面绘制就是一个典型的工厂设计模式,如上图:
(1) Android框架层的Activity(E)中onCreate()(I)函数通过IOC机制回调myActivity(T)类里的onCreate()函数;
(2) 在myActivty类中通过new出一个类myView;
(3) myView(T)类被Android框架层View(E)通过IOC机制回调后交给了WMS(windowManagerService)处理最终显示到界面
(4) 通过以上的myActivity创建了myView的过程,两个EIT造型组合出了FM(factory)模式;
三、Android中跨进程的FM设计模式应用:
Android中经常会用到跨进程通信,这个时候对Binder的使用就会比较多,通过上面UML 图可以看出常见的创建Binder的创建过程
(1) myService在执行onStart函数的时候会去new一个myBinder;
(2) 创建了myBinder之后,Android框架就会回调onTransact函数,在Android框架层是通过execTransact函数来调用的;
(3) Android框架层会去执行Binder构造函数,里面会调用Init函数,Init函数就去通过JNI执行c/c++代码喽,于是跨进程通信就顺利的跨过了语言障碍;