Flex 作為 RIA 表現層技術,以 MXML 聲明式 UI、ActionScript 3.0 強類型語言、編譯為 SWF 運行於 Flash Player,完美契合 J2EE 多層架構。本文詳解 AS3 核心特性(命名空間、動態類、函數表達式、get/set 存取器),並通過「用戶管理」完整案例展示:接口工程分離 Model/Service、VO 傳輸解耦、Servlet 輸出 XML、Flex HTTPService 交互全流程。
| 特性 | 說明 | 差異點 |
|---|---|---|
| 四大內置修飾符 | public/private/internal/protected | internal:包內可見,類似 Java default |
| 自定義命名空間 | namespace + use 關鍵字 | 比 Java package 更靈活 |
| 無塊級作用域 | for 循環內 var 在整個函數可見 | 與 Java/C# 不同,需注意變量提升 |
| 動態類 | dynamic class 運行時動態增屬性/方法 | Object 本身即動態類 |
| 函數表達式 | var f = function(){} 需手動 delete 回收 | 函數語句自動回收 |
| arguments 對象 | 類似 JS,支援可變參數 | 亦可用 Java 風格固定參數 |
| 靜態/實例同名屬性 | StaticTest.message vs instance.message | 通過類名/實例區分訪問 |
| get/set 存取器 | 編譯期語法糖,運行時屬性訪問 | 比 JavaBean 更原生 |
// 1. 接口工程(獨立模組,設計師維護)
interface IUser { long getId(); String getUserName(); ... }
interface DAOFactory { IUser getUserById(String id); List getAllUsers(); ... }
// 2. Service 層使用 VO 隔離 Model
class UserVO { long id; String userName, passWord, email, address; }
// 3. Servlet 輸出 XML 而非 HTML
response.setContentType("text/xml");
out.write("success ");
// 4. Flex MXML 聲明式交互
{txtname.text} {txtpwd.text}