梳理毕业后所做的开发工作,最先是高通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 代码如下:
// 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