梳理毕业后所做的开发工作,最先是高通BREW平台的功能机开发,需要一些ARM等嵌入式的知识;接着做C/C++的后台应用程序开发;由于有BREW功能机的开发经历,后面又切到了Android的APP开发(主要做上层业务+JNI),将音视频类APP的前后端能拉通实现(C/C++的后端);期间还自学了iOS的APP开发,所以整个知识面的广度是有的;从编程语言选择上,在工作过程中主要根据业务场景的需要,选择合适的编程语言实现,所以也接触了包括Shell/Python/PHP/Javascript等脚本语言;从业务的技术面上来说,音视频的业务会更熟悉些,毕竟这行包括了复杂的流媒体、VOIP和网络传输的技术,非一两年的浸润能熟悉的;上帝说,凡有的,还要给他,叫他丰足有余;凡没有的,就连他有的,也要取去,所以思索再三,首要做的事情就是对原来涉猎的技术点和业务进一步加强,就如同呱牛笔记的顶层分类一样,从如上的几个方向,从底层原理和架构的层面,加强底层知识和逻辑。
首先找了几本Android开发的书,其中一本是《Android_应用框架原理与程序开发_高焕堂》,网上有电子版,刚开始接触Android APP的时候看过,其中关于框架的方向控制逻辑思想印象深刻,重新翻出来看,对Android架构的理解还是很有帮助的;
应用程序框架的魅力,反向沟通(IoC,又称为反向控制)正向调用就是APP调用SDK的API,SDK调用APP的实现接口则称为方向调用,Android APP的魅力就是反向沟通,所以才有了生命周期,这对生命周期的理解很关键;
反向沟通的主要实现逻辑是类的继承和多态特性,具体是通过Java的abstract的抽象类来实现;推而广之,所有框架调用使用方的思路都可以简称为反向沟通;
反向框架例图:
其 Java 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | // VIP.java package _concrete_classes; import _abstract_classes.*; public class VIP extends Customer { private String tel; public VIP(String na, String t) { super .setName(na); tel = t; } public void display() { super .display(); System.out.println( "TEL: " + tel); } } // Person.java package _abstract_classes; public abstract class Person { protected String name; public void setName(String na) { name = na; } public abstract void display(); } // Customer.java package _abstract_classes; public class Customer extends Person { public void display() { System.out.println( "Customer: " + super .name); } } // Product.java package _abstract_classes; public abstract class Product { protected int pno; protected Customer cust; public Product( int no) { pno = no; } public void soldTo(Customer cobj) { cust = cobj; } public void inquire() { this .print(); System.out.println( "sold to ..." ); cust.display(); } public abstract void print(); } // TV.java package _concrete_classes; import _abstract_classes.*; public class TV extends Product { private double price; public TV( int no, double pr) { super (no); price = pr; } public void print() { System.out.println( "TV No: " + pno); System.out.println( "Price: " + price); } } // JMain.java import _abstract_classes.*; import _concrete_classes.*; public class JMain { public static void main(String[] args) { TV t = new TV( 1100 , 1800.5 ); VIP vp = new VIP( "Peter" , "666-8899" ); t.soldTo(vp); t.inquire(); } } |
反向沟通的魅力体现在:
0、框架提供预设的行为,代表了默认的动作;
1、主控者是框架,而不是应用程序,框架可以隐藏复杂的业务调用逻辑,简化调用方的程序逻辑;
2、抽象和衍生作为应用框架设计的主要思维方式;
这本书有些历史了,但架构的设计思想是不会过时的,所以看前几章还是很有启发意义的。
-------------------广告线---------------
项目、合作,欢迎勾搭,邮箱:promall@qq.com
本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com