"高焕堂关于Android的两层框架讲解"
在Android开发中,高焕堂提出了一个名为“双层框架”的设计理念,旨在提高代码的可维护性和灵活性,降低应用程序(AP)与游戏引擎(Engine)之间的耦合度。这个框架模型主要由两个层次构成:上层的Java框架和下层的C++引擎。
1. **框架的生成**:
- 双层框架的灵感来源于传统的C++应用程序,特别是C++游戏应用。在这些应用中,用户界面(UI)和游戏引擎是分开的,通过C++子类化来实现特定功能。
- 在Android的双层框架中,Java框架作为上层,提供一般性的基类,而C++ Engine作为下层,负责执行性能敏感或特定领域的任务。这种分离允许开发者专注于各自领域的知识,Java层处理平台相关问题,C++层则处理引擎的复杂逻辑。
2. **框架的角色**:
- Java框架(SuperClass)作为"一般性基类",为AP提供接口,但不直接被AP调用(Don’t call me)。它充当了AP和Engine之间的桥梁,降低了两者间的依赖性。
- C++ Engine(Subclass)作为"特殊领域的基类",实现了具体的功能。由于框架的存在,Engine可以独立更新,不受AP的限制,从而实现“没钱就改版,改版就有钱”的迭代模式。
3. **单层框架与双层框架的比较**:
- 单层框架通常是Java框架,直接与JNI(Java Native Interface)交互,将Java基类与C++ Engine的子类结合在一起。这种方式虽然简单,但可能导致AP与Engine的耦合度较高。
- 双语言(单层)框架则是Java框架与C++ Engine的混合,Java子类直接与C++ Engine交互,增加了跨语言的复杂性。
- 双层框架引入了一个C++框架HAL(Hardware Abstraction Layer),进一步分离了Java层和C++ Engine层,提供了更好的抽象和模块化。
4. **双层框架在Android中的应用示例**:
- Android的双层框架示例通常涉及三个部分:Java框架的定义,JNI的使用来连接Java和C++,以及C++ Engine的实现。这样的结构使得Engine可以灵活地处理底层操作,而Java层则负责用户交互和系统兼容性。
通过这样的双层框架设计,开发者能够更有效地管理代码,提升应用程序的可扩展性和可维护性,同时充分利用C++的性能优势,保证了Android应用的高效运行。