linugb118--java space

          Java

          高煥堂老師的軟件架構(gòu)的講座

          上次有幸參加了高煥堂老師的軟件架構(gòu)的講座:
          總結(jié)了下面幾點(diǎn):
          1.做框架的思想很簡(jiǎn)單,就是所謂的雕刻之道,軟件就如一塊大理石,把多余的部分去掉,那就可以了
          再比如如何做汽車的框架,為了滿足汽車能在沙灘上,地面上,山坡上跑,我們只要把輪胎去掉,那么
          剩下的就是框架,做軟件完整的API不要寫,留給空位就行了。
          2.麥肯錫的思路(反向思維):當(dāng)需要想完成某個(gè)目標(biāo)的時(shí)候,往往一般人會(huì)想我現(xiàn)在應(yīng)該先去做什么,然后
          再做什么,這樣的思路往往出來(lái)的step by step 只有一種,如果反向思維,從現(xiàn)在目標(biāo)開始反向推理出前一
          階段的幾種可能性,然后從分別對(duì)這幾種可能性再向前推,以此類推可以形成一個(gè)樹狀,然后根據(jù)先有情況
          去除不能滿足的鏈路,這樣同樣的問題 你的思路和方法以及可選擇的路線就多很多,往往不是一條。這就是
          反向思維
          3.如果把軟件生產(chǎn)比作工廠,請(qǐng)問軟件工廠的原料是什么? 是需求? 如果回答是需求,那就錯(cuò)了。
          需求和架構(gòu)沒有關(guān)系。需求是桌面,架構(gòu)是桌腳,桌腳的要幾個(gè),什么形狀和桌面沒有關(guān)系,只要桌腳能支持
          桌面就行了。
          4.架構(gòu)就像萬(wàn)里長(zhǎng)城,他是保護(hù)自己人的,是自己人能安居樂業(yè),外面的多變都被萬(wàn)里長(zhǎng)城擋在外面,
          框架下面的可以多變,沒錢就改版,改版就有錢。
          5.寫框架的是強(qiáng)龍,寫AP的是地頭蛇。買主出現(xiàn)才有地頭蛇。也就是需求出現(xiàn)的時(shí)候才有地頭蛇。
          6.軟件哲學(xué),如何讓先寫的call后寫的?引入接口和基類就能完成這個(gè)問題
          7.子接口因?yàn)槎际腔A(chǔ)基類,那么他們之間怎么new,如果他們要new 也就向框架要,這樣才能不違背框架的用意。
          8.框架先不要考慮太多效率的問題,效率的問題在后面慢慢修改,這樣可以減少考慮的因素,更容易理清。
          9.強(qiáng)龍要有主控權(quán),那么框架所做的事情就是能讓強(qiáng)龍能包容改變
          10.如果不想子系統(tǒng)繼承那么就用final 關(guān)鍵字
          11.如果兩個(gè)類 不要相互繼承,但是要他們相互call,那么就在他們里面分別定義一個(gè)方法,相互call
          12.基類告訴子類,讓子類call她,那么子類才能call基類,沒有call子類,那么子類不能先去call她。
          13一般進(jìn)程process 是不共享的,他們?cè)诓煌奈恢脜^(qū)間,如果要跨進(jìn)程的call,那么用IPC。而Process
          一般分Main thread;Message Quene;Main Looper。其中Main thread是主線程,他通過Looper 一直查看他的
          MQ,MQ記錄要求做的事情,如果MQ里面有什么事情,那么Main thread 就拿到他把他做掉。
          14.Main thread 主要是處理UI相關(guān)的用戶事件,而且一般有時(shí)間設(shè)置比如每個(gè)function不能超過5s。
          15Andriod中是通過IBinder 來(lái)實(shí)現(xiàn)跨進(jìn)程的通信。
          16.主線程一定有一個(gè)MQ 一個(gè)Looper。而小線程沒有,所有小線程從一開始到執(zhí)行完就結(jié)束了,但是小線程
          不能touch UI,只有Main thread 可以touch UI相關(guān)的用戶事件。
          17 架構(gòu)師是在暗室里面抓黑貓,在沒有路的情況下找出一條可行之路,所有沒有步驟可言。
          18 做框架 盡量把人家會(huì)抓住你的地方分開,如果實(shí)在分不開,可以當(dāng)壁虎,把壁虎的尾巴給人家抓。
          19 框架的東西盡量要用c++寫,因?yàn)閏++比起java 安全,快,無(wú)反編譯。
          20 做一個(gè)系統(tǒng)一定要只要你的控制中心和整合中心,而且他們只有一個(gè)并且只有一個(gè)連接。控制中心好比大腦
          而整合中心好比骨骼。在控制中心可以增加狀態(tài)機(jī)來(lái)增加控制力和安全性。

          posted on 2010-01-28 14:29 linugb118 閱讀(3025) 評(píng)論(4)  編輯  收藏

          Feedback

          # re: 高煥堂老師的軟件架構(gòu)的講座 2010-01-28 17:02 倫理電影



          來(lái)學(xué)習(xí)了!  回復(fù)  更多評(píng)論   

          # re: 高煥堂老師的軟件架構(gòu)的講座 2010-01-30 13:56 qd

          3.如果把軟件生產(chǎn)比作工廠,請(qǐng)問軟件工廠的原料是什么? 是需求? 如果回答是需求,那就錯(cuò)了。
          需求和架構(gòu)沒有關(guān)系。需求是桌面,架構(gòu)是桌腳,桌腳的要幾個(gè),什么形狀和桌面沒有關(guān)系,只要桌腳能支持
          桌面就行了。

          ----------------------

          強(qiáng)烈反對(duì)這個(gè)說法!!!!  回復(fù)  更多評(píng)論   

          # re: 高煥堂老師的軟件架構(gòu)的講座 2010-01-31 10:48 leekiang

          大部分都很有道理  回復(fù)  更多評(píng)論   

          # re: 高煥堂老師的軟件架構(gòu)的講座 2010-02-02 11:24 linugb118

          同學(xué):請(qǐng)問如果現(xiàn)在是一個(gè)自行車工廠,他需要生產(chǎn)自行車,請(qǐng)問生產(chǎn)自行車的原料是什么? 是需求嗎? 顯然不是。軟件和實(shí)體的區(qū)別在于不可實(shí)體化,所有往往很多實(shí)體類似的東西,到軟件這邊就忽視掉了
          @qd
            回復(fù)  更多評(píng)論   



          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 麦盖提县| 行唐县| 客服| 奉新县| 南京市| 宣武区| 蒲城县| 象州县| 读书| 曲阜市| 手游| 十堰市| 巴南区| 思南县| 武清区| 东山县| 临朐县| 昌邑市| 山东省| 安远县| 合江县| 京山县| 泰和县| 临汾市| 新平| 醴陵市| 阳原县| 锦屏县| 济宁市| 阳泉市| 綦江县| 西城区| 象州县| 灯塔市| 长葛市| 深泽县| 东丰县| 天台县| 兴业县| 当雄县| 清涧县|