Android-mvp 吴明
- mvc与mvp对比
mvp
- model:依然是业务逻辑和实体模型
- view:对应于Activity,负责View的绘制以及与用户交互
- presenter:负责完成View于Model间的交互
- 关系图
View定义定义包括:Activity,xml,Fragment,adapter
- Google定义MVP
开源工具SWIG - 杨俊构
什么是SWIG
- 官方网站 http://www.swig.org/
GitHub开源 https://github.com/swig/swig
SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中 也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。
SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。SWIG还能够导出 XML或Lisp s-expressions格式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。
快速开发
eg: 将 C语言转化成java (Windows下)
1 |
|
- 编写接口文件example.i
1 | /* example.i */ |
$ swig -java example.i
$ gcc -c example.c example_wrap.c -I/c/jdk1.3.1/include -I/c/jdk1.3.1/include/win32
$ gcc -shared example.o example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o example.dll
$ cat main.java
public class main {
public static void main(String argv[]) {
System.loadLibrary("example");
System.out.println(example.getMy_variable());
System.out.println(example.fact(5));
System.out.println(example.get_time());
}
}
$ javac main.java
$ java main
3.0
120
Mon Mar 4 18:20:31 2002
$
1 |
|
%module example
%{
/ Includes the header in the wrapper code /
include “header.h”
%}
/ Parse the header file to generate wrappers /
%include “header.h”1
2
> 另外,有些人可能只包括SWIG条件指令在头文件中。例如:
ifdef SWIG
%module example
%{
include “header.h”
%}
endif
extern int fact(int n);
…
```
编写JNI封装器的代码,还有处理数据类型的转换耗时且费力,所以要用到 SWIG是java程序的福利。
总结
- SWIG是一个运用于编译环节的软件开发工具,它能生成出代码来使得用 C/C++ 编写的代码可以同其它编程语言连接在一起。
- SWIG 不只是能被用在 Android 和 Java 开发领域,它是一个扩展性方面很强大的工具,也可以用来自动生成其它编程语言的代码。
- 总之,安装和使用swig都是非常简单的事情。使用swig能够大大减轻程序员的痛苦程度,帮助你更快的完成你想要的功能。