目錄
第1章接口
1.1使用接口編程
1.2依賴反轉原則
1.3如何實現
1.3.1工廠模式
1.3.2服務定位器模式
1.3.3依賴注入
1.4真的實現了嗎
1.4.1依賴的傳遞性
1.4.2依賴的形式
1.5真正實現
1.5.1配置文件
1.5.2配置代碼
1.5.3慣例先于配置
1.5.4元數據
1.5.5實現消除依賴的方法的本質
1.6有必要針對接口編程嗎
1.6.1針對接口編程的成本
1.6.2接口的意義
1.6.3何時針對接口編程
第2章事件
2.1控制反轉
2.2觀察者模式
2.3Java中的事件編程
2.3.1通用的事件發(fā)布者和收聽者
2.3.2通用事件收聽者的問題
2.3.3Swing用戶界面里的事件編程
2.3.4專用事件收聽者的問題
2.3.5徹底地面向對象
2.3.6Java 8帶來的福音
2.3.7這一切背后仍然是對象
2.4C#中的事件編程
2.4.1代理
2.4.2事件
2.5JavaScript中的事件編程
2.6事件編程的其他細節(jié)
2.6.1收聽者的執(zhí)行順序
2.6.2收聽者是否在單獨的線程執(zhí)行
2.6.3控件層次中的事件傳播
第3章MVC
3.1輸入、處理和輸出
3.1.1馮·諾依曼架構
3.1.2矩陣運算器和IPO
3.1.3矩陣運算器和IPO的升級版
3.2程序與用戶的交互
3.2.1三類應用程序
3.2.2持續(xù)交互帶來的變化
3.2.3圖形用戶界面帶來的變化
3.3設計理念
3.3.1關注點分離
3.3.2模型
3.3.3模型和視圖的分離
3.3.4控制器
3.3.5模型視圖
3.3.6事件發(fā)布者與收聽者之間的依賴
3.3.7合作方式
3.4桌面應用程序與移動App
3.4.1控制器和視圖在代碼單元上獨立
3.4.2控制器、視圖和模型之間的相互引用
3.4.3控制器和視圖合一
3.4.4移動App
3.5Web應用程序
3.5.1Web應用程序簡史
3.5.2服務器端的MVC
3.5.3前端控制器與控制器
3.5.4視圖
3.5.5模型
3.5.6依賴注入
3.5.7瀏覽器端的MVC
3.6類型轉換、校驗和數據綁定
3.7MVC的意義
第4章界面
4.1以用戶界面為中心VS以業(yè)務邏輯為中心
4.2設計視圖VS源代碼視圖
4.3自定義控件VS復合控件
4.4命令式語言VS聲明式語言
4.5內容與外觀的分離
4.6基于請求的框架VS基于組件的框架
4.7極簡主義
4.7.1用戶界面上的極簡主義
4.7.2刪減的對象
4.7.3方法和特征
4.7.4防止過度
第5章數據庫
5.1多值與復合屬性
5.1.1關系型數據庫模式的第一范式和第二范式
5.1.2范式與復合、多值屬性
5.1.3關系型數據庫中的多值和復雜數據類型
5.2數據庫模式
5.3數據建模
5.3.1抽象的數據建模
5.3.2針對具體數據庫的建模
5.4視圖
5.4.1索引
5.4.2關系型數據庫中的視圖
5.4.3文檔型數據庫中的視圖
5.5可伸縮性
5.6可得性與BASE
5.7編程接口
5.8總結
第6章權限
6.1身份驗證
6.1.1驗證類型
6.1.2驗證屬性
6.1.3知識要素驗證
6.2Web應用的驗證
6.2.1驗證與會話
6.2.2第三方身份驗證
6.3授權
6.4基于角色的存取控制
6.4.1用戶與權限
6.4.2群組與角色
6.4.3權限與操作
6.4.4實現
6.5基于屬性的存取控制
6.5.1資源與存取方式
6.5.2從權限到屬性
第7章異類
7.1快速開發(fā)
7.2Lotus Notes是什么
7.3技術架構
7.3.1數據庫
7.3.2客戶端與服務器
7.4應用程序開發(fā)
7.4.1兩種路徑
7.4.2用戶界面驅動的快速開發(fā)
7.4.3事件驅動編程
7.4.4直接使用文檔對象編程
7.4.5權限模型
7.4.6角色和隱藏公式
7.4.7三類應用程序
7.4.8多種編程語言
7.5Lotus Notes的衰亡及其教訓
7.5.1對用戶主觀體驗重視不夠
7.5.2快速開發(fā)的缺陷
7.5.3嵌入式開發(fā)的缺陷
7.5.4數據庫和應用程序合一
7.5.5創(chuàng)新乏力
7.6給現有Lotus Notes客戶的建議
第8章興衰
8.1軟件的更新和生命
8.1.1兼容性
8.1.2兼容性與創(chuàng)新
8.2客戶端的興衰
8.2.1客戶端與服務器
8.2.2遠程過程調用和數據傳輸協議
8.2.3客戶端的胖瘦趨勢
8.2.4客戶端與瀏覽器
8.2.5瀏覽器與App
8.2.6理想的客戶端應用程序
8.2.7開發(fā)人員體驗VS用戶體驗
8.3Lotus Notes的歷史
8.3.1前身
8.3.2青少年: 版本1~3
8.3.3中年: 版本4~6
8.3.4老年: 版本7~9
參考文獻