重读《Android_应用框架原理与程序开发_高焕堂》

梳理毕业后所做的开发工作,最先是高通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、抽象和衍生作为应用框架设计的主要思维方式;


这本书有些历史了,但架构的设计思想是不会过时的,所以看前几章还是很有启发意义的。

请先登录后发表评论
  • 最新评论
  • 总共0条评论