android架構師之路
A. 我幹了5年android程序員了,怎麼往架構師轉,需要具備哪些技能
前端工程師+程序員+系統管理員+對各種技術靈活搭配的能力+模式總結=架構師
這些就是一個架構師所需要具備的技能
台灣android教父高煥堂出了個叫《android從程序員到架構師之路》的課程也許會對你
B. [轉載]如何成為一名架構師[轉]
架構師是一個神秘而又神聖的名詞,作為軟體開發領域的設計師,架構師承載著太多的責任和挑戰。對於一個程序員或者工程師來說,架構師就像是一個目標,一條道路,抑或是一座山峰。如何能夠成為一名合格的架構師?架構師應該具備何種素質?而架構師又是如何做到持續不斷的成長和提高的呢?帶著這些問題,我們請到了五位InfoQ 中文站的編輯,同時也是各領域出色的架構師或者咨詢師,來談談他們心中的「架構師修煉之道」。他們是:宋瑋:InfoQ 中文站Java 社區首席編輯王瑜珩:InfoQ 中文站.NET 社區編輯,ThoughtWorks 咨詢師 趙劼:InfoQ 中文站.NET 社區編輯,微軟最有價值專家,現任某創業團隊架構師張龍:InfoQ 中文站Java 社區編輯 李明:InfoQ 中文站Ruby 社區首席編輯,現任某通信公司架構師1)在你的心目中,架構師意味著什麼?張龍:架構師是一個項目組的靈魂人物,他決定著整個系統的技術選型、整體架構以及模塊劃分,同時還可能擔當與領導層的溝通角色,從某種意義上來說,架構師在很大程度上決定著項目的成敗與否,正所謂火車跑得快,全靠車頭帶。 王瑜珩:對我來說,架構師一直是一個很迷惑人的詞,似乎每個人的理解都多少有些不一樣。我認為架構師更像是一個投資家,需要權衡各方面的利益和風險,反復思量,最後給出一個現實可行的方案,爭取用最小的風險獲得最大的利益。 李明:我覺得,架構師不僅僅是一個頭銜,更是一份責任。所謂「在其位,謀其政」,我倒是覺得架構師更像是父母,而系統和項目則如同子女一般,需要架構師耐心的呵護和培養。完成一個項目,絕不是架構師工作的全部。通過代碼重構和架構改造,讓這個項目如同有了生命一般逐漸成長起來,這才是架構師最終的目標。2)架構師應該具備何種技能或者素質?宋瑋:架構師應該具備一定的業務知識和業務分析能力,能夠准確地把握需求。要有較強的學習能力,對於新出現的技術、框架和工具,能夠快速掌握。扎實的基本功,能夠把握住技術方向。良好的溝通能力,能夠清楚地表達自己的意圖和想法。李明:代碼能力絕對是很必要的。我見過太多隻懂得畫圖的架構師了,「識大體不拘小節」這個說法,在架構師身上並不適用。作為一名架構師,在系統的性能和可擴展性上,要有足夠的敏感性,既要充分利用現有資源,又要為長遠做好打算。另外,對業務的理解是很多技術架構師所忽視的地方,只要徹底了解業務需求,技術才能派得上用場。趙劼:在我看來,一個合格的架構師需要具備開放的眼光,各種平台、系統、項目隨手拈來皆可組合,唯一的目標則是針對合適的環境選擇合適的做法,這顯然需要在成本和質量之間進行權衡。作為一個架構師,應該具有很好的「彈性」,在真正的環境中,很少會遇見與過去一模一樣的情況,因此也需要架構師能夠大膽嘗試,靈活應對,使用踏實而嚴謹的做法來進行推測。一個架構師也必須有著足夠的溝通和交流能力,把自己的想法使用合適的方式告訴別人,並且根據別人的反饋進行不斷調整自己的觀點。沒有東西是永遠正確的,但是一個人往往會傾向於自己的結論,而作為一個合格的架構師,需要有能力認識到自己存在的缺陷,使用各種方式進行彌補。王瑜珩:架構師需要高瞻遠矚著眼未來,從外部功能與內部架構兩方面來考慮可能面臨的變化。誠如周愛民所說,架構師要在開發1.0 版的時候就想到2.0、3.0,甚至更遠。然而在考慮未來的同時,也不能脫離現在,不能由於對未來的設想而大幅提高現在的開發成本,萬一未來並沒有到來,所有對未來的投資都將毫無意義。因此架構師需要平衡投資與風險之間的關系,以適當的風險來獲得最大的利益。架構師需要有良好的溝通能力,才能將自己的想法展示給開發團隊中的每個人,確保整個團隊對系統架構的理解是一致的。架構師不能脫離實際,設計一個無法實現或成本很高的架構。同時對於一個實際的團隊來說,也需要了解團隊中成員的能力,知道何種架構可為,何種架構不可為。張龍:很多優秀的架構師都是從一個優秀的開發人員轉變過來的,但優秀的開發人員未見得都能成為合格的架構師。與架構師相比,開發人員所需擔當的任務相對狹隘的多,其最大的目標就是編寫出精良的代碼、做好充分的測試以及撰寫高質量的文檔等;而架構師所要面對的則相對寬泛得多,除了過硬的技術之外,還需要有良好的表達能力,同時還要有宏觀的駕馭整個系統的能力。3) 架構師需要不斷修煉和提高的是什麼?宋瑋:擴充知識面,學習了解眾多技術及框架的特點和適用范圍。了解非功能特性的相關技術和方法,包括可用性、容錯性、可擴展性、可伸縮性等等;了解系統安全性方面的技術和框架以及系統性能和狀態監測方面的知識及工具。除了技術方面,還架構師還應擴展自身的業務知識,不斷提高業務分析能力。想要做到持續不斷的學習,保持對各種技術、框架、產品的濃厚興趣是必不可少的,另外還要掌握他們各自的優缺點及相應的適用場景。學習途徑和方式則是多種多樣的,但是有一點是可以肯定的,架構師們相互間經常交流對成長是非常有益的。InfoQ 的《架構師》就提供了一個很好的交流平台,通過大家的廣泛參與,相信《架構師》能夠在分享經驗、促進交流方面起到積極的作用。李明:我覺得這個問題可以從兩個方面去談。一方面,架構師要緊跟技術潮流,了解技術的發展和趨勢,利用新技術、新方法來提升團隊的生產力,將技術轉化為收益。這就要求了架構師平時要多關注所在領域或社區最新的新聞和報道,最簡單有效的方式莫過於每天都看看InfoQ 中文站了。而另一方面,架構師要培養自己的專業領域。雖然從技術的層面上說,很多解決方案放之四海而皆準。但是,從業務的角度來說,很多行業的解決方案放到另外一個行業中,未必行得通。這就要求了架構師必須對所屬行業的業務十分了解才行,這也是一個平日里需要修煉的地方。趙劼:架構師的學習過程是痛苦也是美好的,一個合格的架構師應該可以從學習過程中找到,至少是追求「架構之美」,把架構當作一種「藝術」來對待,並且可以把這種美給傳播出去,帶領技術團隊把這種美變成產品,讓更多人體會得到。張龍:架構師之路是崎嶇的,充滿了荊棘與挑戰,但這卻是無數開發者的夢想。架構師是多項技能與素質的綜合體,每一位以此為目標的開發者都需要在平日的工作中不斷提升自己,在這里我衷心的祝願架構師這個夢想能照進每一位有心人的現實。對於合格的架構師應該具備的素質和技能方面,張龍還給出的詳細的列表:有人曾說過,20 幾歲的編程天才好找,但30 多歲的優秀架構師難尋。架構師何其難?除了敏銳的洞察力之外,我認為一個好的架構師必須具備如下幾方面的素質:過硬的技術能力:有人說架構師就不需要編寫代碼,只需設計整體架構就行了。但我認為這是很片面的,試想一個人如果長時間不寫代碼,他還能具備持續的技術敏感度么?當然了,這里所說的寫代碼並非一般開發人員的行為,而是讓自己保持住對代碼的感覺。還有人說架構師不一定是技術高手,這一點我很同意,但他一定是個優秀的開發者。 良好的溝通能力:這一點尤為重要,因為架構師需要與項目組的開發人員以及領導層不斷交換意見,向對方傳遞自己的設計意圖與思想,沒有良好的表達與溝通能力是很容易出現問題的。這一點在溝通方式並非母語的企業中尤為明顯。 良好的軟體工程素質:雖說架構師不是項目經理,但我認為他需要對軟體開發過程有清晰明確的認識,這里的開發過程是個泛指,也許是RUP,也許是XP,是什麼無所謂,但這種工程素質是每個優秀架構師必備的品格之一。 寬廣的知識領域:架構師的眼界一定要開闊,絕對不能局限於眼前的小范圍事務,否則極易出現「鼠目寸光」的後果。這就需要架構師不斷學習,這里的學習既包括技術上的,同時也包括業務上的以及溝通上的。 領域知識:架構師務必對自己所從事的業務領域有深刻的認識,他未必要成為業務專家,但他一定要對業務知識有深刻的理解。很難想像經常從事金融領域項目的架構師能輕松設計好電信領域的項目架構。知識需要積累,業務也是這樣的。處理系統非功能性需求的本領:架構師尤其需要對系統的性能、容錯、並發等非功能性需求方面有獨到的認識與解決辦法。一個項目到了後期,往往都是這些問題成為整個項目的瓶頸,這時架構師就要發揮其優勢了。通過上面諸位的發言,我們可以看出,架構師得是一個「全才」,不但在技術上和業務上要做到「兩手抓,兩手都要硬」,更是得需要持續不斷的修煉和學習,才能成為一名合格的架構師。雖然這是一條充滿挑戰的道路,但也同樣充滿了樂趣與收獲,正所謂「無限風光在險峰」,讀者朋友們,你們做好准備了嗎?
C. Android 開發有哪些新技術出現
建議先看看android架構師之路的教程。
基本OOP知識
業務內涵的分析抽象&表達
Messager框架與IMessager介面
Native核心服務的Proxy-Stub設計模式
D. 誰能分享下百度雲,安卓開發視頻教程,
我有
《Android架構師之路
網路層架構設計與實戰》
《Android
專項測試
Python篇》
《Android應用發展趨勢必備武器
熱修復與插件化》
《Android自動化測試實戰
Java篇
主流工具
框架
腳本》
這幾個視頻教程可以嗎
E. 如何從程序員到架構師
程序員到架構師的技術成長之路分為幾個典型的階段:工程師 - 高級工程師 - 技術專家 - 初級架構師 - 中級架構師 - 高級架構師,總的成長原則是每個階段都需要「積累經驗、拓寬視野、深度思考」。
F. web架構師學習之路,有大神能指條明路嗎,已coding3年!熟悉設計模式。要看什麼書,學習什麼知識
我認為吧,像架構師啊,設計師這類的吧,不在於他掌握了多少技術,會使用多少技術,關鍵在於它深刻理解他目前所使用技術的特點和原理,比如設計模式,他深知每個設計模式的特點,通常在怎樣的業務場景下使用之類的!這是技術層的!接著來就是業務層的,你特別熟悉你目前所做的項目的業務,來龍去脈。其實最關鍵的還是業務性的,技術性的了解大概,然後真的用的時候可以查資料,做實驗之類的,業務是在架構師的心裡,沒有資料可尋的,然後他的工作就是把這些業務需求用技術把他們關聯起來!這些都不是那本書上能給講的,而是平時多積累,多思考吧!
當然開始你也可以找本關於架構師之類的書,或者網上的資料,這些都很好找,這些書不是看了你就可以成為架構師,而是給你一個做架構師的思路,然後慢慢再從工作實踐中積累吧!
G. 系統架構師有沒有前途,待遇怎麼樣。
你好,互聯網架構師是行業內緊缺的Java高端人才,待遇屬年薪百萬級。
1、Java構架師之路
對於工作多年的程序員而言,日後的職業發展大部分人無非是轉型管理和晉升架構師兩種選擇。
架構師在公司中擔當著「IT架構靈魂人物」的角色,因為他們不僅做著架構師的本職工作,還同時做程序開發,寫核心代碼。另外,架構師依舊是技術高手,編程能力依然是一流的。
對於架構師和項目經理,不同能力的人,不同的公司,薪資水平都不盡相同。但就這兩個職位而言,都需要具備非常高的編程技能。
希望我的回答對你有幫助!
H. android從程序員到架構師之路的作品目錄
Part-1: 從架構到代碼的過程
1.1 敏捷與架構的完美組合 敏捷開發的原則和價值觀 開發、架構、測試之關系 架構在敏捷過程里的角色 架構師在敏捷過程的職責 過程觀點:(需求)測試做<反饋>,敏捷(過程)做<迭代>; 分合觀點:(架構)設計做<分>,(代碼)開發做<合> 測試觸發反饋,反饋帶動迭代,迭代驅動<架構à代碼>重構 迭代促進了<架構師&開發者>的心靈溝通與攜手協作 舉例:架構師如何設計敏捷的起始架構(Simple Solution) 加法設計:圍繞問題( Problem)和願景(Vision),產生創意構想(Creative Idea) 減法設計:創意愛上限制(Creativity loves constraint) 1.2 代碼是架構的外貌,永遠青春 架構師與開發者的合作成果:架構+代碼=軟體(系統) 架構是軟體的骨架、代碼是軟體的外貌 架構是軟體的核心 架構的用意:創新組<合> 架構設計的焦點:介面(Interface) 設計決策具有<未來性>,系統才能適應未來 1.3 設計與開發的分工合作 架構設計的目的是:組合 架構師做<分>,支持開發者做<合>,合作實踐(系統)組合 分得妙,就能合得快(即:分之以為用,合之以為利) 分得妙,就能得好介面(Interface) 架構師的核心工作:介面設計(Interface Design) 開發者的核心工作:依據介面,開發(系統)模塊並整合 有許多種開發者:如App開發者、底層系統開發者等 1.4 敏捷思維:盡快呈現架構的外貌 介面設計是<物>的組合設計 介面設計是<事>的分工設計 架構師設計多種介面來支撐分工與組合 架構師心中的4種介面:SI、PI、API和UI SI:本架構與外部系統之間的整合介面 PI:本架構與內部挿件(Plug-in)之間的介面 API:本架構與應用程序(App)之間的介面 UI:App與用戶的互動介面 l 依循敏捷原則,介面迅速落實為代碼,盡快呈現外貌
1.5 EIT造形:介面美麗的外貌 認識EIT軟體造形 EIT造形:呈現核心設計的外貌 EIT造形的<I>可涵蓋三種:SI、PI、API EIT造形的<E>代表本架構 EIT造形的<T>代表本架構的配件(即插件:Plug-in) 1.6 一群<E&I>美妙的組合是:框架(Framework) 認識GoF的設計模式(Design Pattern) 隨著敏捷的迭代過程,EIT造形會逐漸增加 如何巧妙組合漸增的EIT造形:擅用設計模式 組合起來,就成為軟體框架了 如何迭成多層級(Layer)的框架體系:以Android為例 Part-2: 從Android框架代碼中學習設計
2.1 基礎設計模式(Pattern)的代碼:以Android為例 Template Method模式:IoC(控制反轉)機制 Observer模式:介面設計 Abstract Factory模式:兩個EIT造形的組合 Adapter模式:封裝介面 Composite模式:實踐組合 Façade模式:組合體的介面設計 EIT造形是原子,設計模式是分子 更多EIT造形的組合模式:以Android代碼為例 2.2 從 UI框架入手 View體系的架構設計(使用Template Method模式) Activity-View的架構設計(使用Factory模式) Layout-View的架構設計(使用Composite模式) WMS(WindowManagerService)-View的架構設計 WMS-SurfaceFlinger的架構設計 Surface-Canvas(畫布)的架構設計 SurfaceView與OpenGL的3D繪圖架構設計 ListView框架的設計 2.3 跨進程(IPC)架構設計 Android 的IPC幕後設計:BD(Binder Driver)驅動架構 以IBinder介麵包裝BD驅動的服務 包裝IBinder介面的Proxy-Stub設計模式 Proxy和Stub類別的代碼 設計Proxy和Stub類別的API 如何自動生成Proxy和Stub類別代碼 IBinder & AIDL方法 方法(一):Implementing a Binder 方法(二):Using a Messenger 方法(三):Bound Services 2.4 Java與C/C++兩層框架的設計 JNI(Java Native Interface)代碼開發要點 JNI的數據型態(Data Type)轉換規則 JNI的線程(Thread)模式:JNIENV類的設計 正向通信:Java函數調用本地C函數 反向通信:本地C函數調用Java函數 Android HAL架構設計 HAL(Hardware Abstraction Layer)的意義 理解runtime與HAL Stub 撰寫HAL Stub代碼 Stub調用Linux Kernel的方法 2.5 核心服務的框架設計 認識核心服務(Core Service) 核心服務都是在開機過程中,由Android的INIT進程啟動的 包括Android Service和 Native Service兩種 以Java語言撰寫的,就稱為Android Service 以C++撰寫的,就稱為Native Service 親自撰寫一個核心服務 撰寫一個C++類別 繼承BBinder基類,繼承得來IBinder界面 提供介面給Java層(透過JNI)調用 2.6 JUnit測試框架的設計 Android的測試工具,都是基於JUnit測試框架的 JUnit框架也是由許多EIT造形所組成;其TestCase基類是<E&I> 從基類衍生出各子類,如ServiceTestCase就是擴充的<E&I>;其內涵的setUP()和tearDown()函數就是<I> 可撰寫<T>(即Test case)代碼,來啟動TDD機制 可使用TestSuite基類來管理一群相關的<T>(即Test case) Part-3: 梳理你的架構設計思想、方法和模式
3.1 復習設計概念與技藝
概念復習 說明框架的起源、分層與其「無用之用」效果 闡述應用框架魅力的泉源:控制反轉(IoC, Inversion of Control)機制 深入認識控制反轉機制 主控者是框架,而不是應用程序 現代應用框架:採取廣義IoC觀念 框架的重要功能:提供默認行為(Default Behavior) 技藝復習 抽象(無之)與衍生(有之) 打造框架:細膩的抽象步驟 基本步驟: 細膩的手藝(一):數據抽象 細膩的手藝(二):函數抽象 細膩的手藝(三):將抽象類別轉為介面 善用類的繼承(Inheritance)機制 設計基類的抽象函數 抽象是手段,組合是目的 UML復習 UML的3種基本圖表:類圖、順序圖和用例圖 以UML表達設計模式和框架 EIT造形的兩種表達:UML圖和代碼 3.2 架構設計的需求分析方法 基本設計技能:把輪胎拔掉 偉大的雕刻師羅丹( Musée Rodin)說:」把不必要的部分去掉」 買主需求:想想為什麼(why)汽車架構師會決定把輪胎拔掉呢? 其背後的理由是:買主來了,才知道買主對輪胎的偏好或特殊需求。只有等到買主決定和挑選了輪胎之後,才能將輪胎裝配上去。 探索買主需求 為什麼把輪胎拔掉呢? 為什麼火鍋店的桌子要挖洞呢? 為什麼餐廳要分開<食譜>與<點菜單>呢? 3.3 介面設計模式 什麼是介面(Interface) 在OOP里,將介面定義為一種特殊的類別(Class) 在Java里,將」純粹抽象類別」稱為介面(Interface) EIT造形的介面表示為<I> <I>可以合並到<E>里 誰控制<I>? <E>成為控制點 引擎<E>à<I>à驅動輪胎<T> 如何控制API ? UI與API 被動型API與主動型API API與商業模式 API決定控制權&金流 沒錢就改版,改版就有錢 以HAL為例,說明API = 話語權 誰擁用介面的制定權,誰就掌握控制點,就能獲得較大的話語權 從API看控制力量的強弱等級 把控制力傳播出去 Part-4: 親自<敏捷+架構>、並迭代出代碼
4.1 情境範例:」手機訪問TV/STB」 願景:多屏互動、幸福家庭的實踐 亮點:許多智能設備大量進入家庭,在家裡的Android TV建立一朵私密雲,來整合窗外多個雲平台和手機移動終端,變得流行起來。 情境:手機遠距訪問TV,透過TV打開家中的壁燈開關 架構:基於<手機+TV>的大小機相聯、大小屏幕互動的新架構 設計:設計TV里的框架<E&I>、撰寫插件<T> 技術: 在外的家庭成員透過手機瀏覽器(Browser)上網訪問家庭雲,您可以在家庭雲里,安裝一個i-Jetty網頁容器(Web Container) 此時,I-Jetty里的HttpServlet就是另一個<E>,而它的doGet()等函數就是<I> 您寫的servlet代碼就是I-Jetty的<T>,它接受手機的訪問 4.2 實際開發:依循敏捷、落實為代碼
<架構設計>階段的敏捷迭代 Step-0. 准備測試計劃 訂定此階段的測試方案(Test Case) 以Android手機Browser為測試方案的執行軟體 Step-1. 設計敏捷過程的起點架構:Simple Solution 通信協議:手機與TV采HTTP通信 軟體介面:TV端的EIT造形與手機端Browser對接 設計:以UML表達EIT造形 代碼:賺寫I-Jetty的Servlet來實踐EIT造形 Step-2. 啟動TDD機制、進行迭代 從手機來實機檢測TV里的EIT造形的介面代碼 依循TDD的反饋,迭代Step-1和Step-2的活動 <代碼開發>階段的敏捷迭代 Step-3. 准備測試計劃 訂定此階段的測試方案:基於用戶需求(Requirements) 以Android手機Browser為測試方案的執行軟體 Step-4. 以上階段Step-2產出的EIT造形為起點架構 Step-5. 依循測試方案,展開細節設計和代碼開發 撰寫Android App代碼:基於Android應用框架 I-Jetty的<T>調用Android的App App透過JNI調用Android的Zigbee驅動代碼 Zigbee驅動透過Dongle發信號給壁燈開關 Step-6. 啟動TDD機制、進行迭代 從手機來實機檢測TV里的有關代碼 依循TDD的反饋,迭代Step-5和Step-6的活動,直到完成 4.3 繼續敏捷迭代、開發新功能
新功能1:手機控制TV里的Camera拍照片 TV/STB內的i-Jetty含有servlet代碼,讓手機可以遠距來訪問它 TV/STB則內含Camera驅動,能控制攝像頭硬體 運用EIT造形和敏捷迭代,開發軟體來整合家外的手機與TV/STB上的攝像頭硬體,讓家庭成員隨時從手機來打開TV/STB的攝像頭,拍了照片送回到手機上呈現出來 展開敏捷過程,直到完成 新功能2:手機控制TV將照片送上雲端(Cloud) TV/STB將Camera拍攝的照片送上雲端:例如Google的GAE等 基於WiFi通信協議 展開敏捷過程,直到完成 Part-5: 架構設計應用:支持跨平台
5.1 三個架構設計策略 三個實施策略: 策略-1:把它」EIT(設計)」了 策略-2:挾天子以令諸侯 策略-3:建立中間件(middleware) 5.2 跨晶元(小)平台:採取<策略-1>
情境A:先有別人的(小)平台,然後才建立我的平台 小平台是指別人的平台,該平台的變化決定於別人 為了跨平台,就不宜直接使用別人的平台 您設計<E&I>,而且設計<T>來包容別人平台的變化,這就稱為:把它」EIT(設計)」了。 情境B:先建立我的平台,然後才讓別人來擴充(Extend) 這反過來,讓別人設計插件<T>來擴充(extend)您的<E&I> 別人為了保護他自己,也會將插件分成兩部分:<壁虎尾巴>與<壁虎身體> 萬一您的<E&I>有變化時,這只壁虎(插件)便能棄尾求生,讓<壁虎身體>跨您的<E&I> 5.3 Android版本(大)平台:採取<策略-2> Android升級和版本變更頻繁,終端必須隨之而更新 Android是一個多層級<E&I>結構,各層都是由Google所開發,Google是強龍,位居天子角色,其設計<I>來控制您的插件<T> 您可以拿EIT造形搭配Proxy-Stub設計模式,規劃Stub類別(曹操類),制定自己的<I>,讓<T>脫離Android的<E&I>所牽制;實現」挾天子以令諸侯」的效果 5.4 跨自己的平台(建立中間件):採取<策略-3> 隨著您的公司業務成長,您的平台版本變更頻繁;如何包容自己平台的變化呢? 您可以規劃一個上層平台<E&I>來吸納自己平台的變化 此平台又稱為中間件,其提供穩定的<I>(又稱API),也保護自己平台的變動自由度,實現」沒錢就改版,改版就有錢」的效果 中間件還能提供您的專有API,來凸顯自己平台的獨特性 Part-6: 架構設計的成功案例分享
6.1 案例:重構PhoneGap的架構和代碼 議題:PhoneGap目前只搭配HTML5的Web App 如何重構PhoneGap的架構和代碼 讓PhoneGap也能搭配一般的Native App 現況:目前PhoneGap的架構設計 HTML5 & PhoneGap可以讓UI更容易跨平台 其依賴Browser和PhoneGap的插件<T>來吸收平台的差異化 如果插件很多時,PhoneGap里的PluginManager負責管理之 UI事件是從WebView傳送到PhoneGap的插件<T> 目標 即使不採用HTML5,也能使用PhoneGap來管里插件 一旦不使用HTML5,PhoneGap就不再搭配WebView 於是,PhoneGap轉而搭配一般的View,如Button等 UI事件(Event)改從一般的傳送到PhoneGap的插件<T> 收獲 如何攔截App的啟動事件(onCreate事件)和UI事件 以EIT造形加快理解PhoneGap框架的結構 深刻領悟<I>的設計要領:如IPlugin介面設計 熟悉從<重構設計>到<重構代碼>的過程 6.2 重構的設計思考 重構范圍內共有3個EIT造形的美妙組合 第1個造形:{ Activity-DroidGap } 第2個造形:{ WebView-CodavaWebView } 第3個造形:{ PluginManager-Plugin-<T>} 熟悉從<重構設計>到<重構代碼>的過程 因為不再搭配WebView,所以前兩個EIT造形都必須重構 第3個造形最復雜 上上策是:不重構第3個造形,其內涵和介面代碼都保持不變 成功地讓第3個造形跨到重構的新平台(即前兩個造形) 6.3 案例的成功關鍵和啟示 關鍵:在於上述的設計思考 洞悉:心懷EIT造形去觀察架構 技巧:從<I>觀察重構的變動震幅,找出上上之策 啟示:優越架構,帶來易於重構的機會,創造了系統未來性