被老大斃掉的架構(gòu)設(shè)計(jì),真的很差嗎
原因:
在ipad上做一個(gè)類(lèi)似于ibook的軟件,其實(shí)相當(dāng)于用webBrowser展現(xiàn)一套HTML頁(yè)面(寫(xiě)了個(gè)JS框架控制內(nèi)部數(shù)據(jù)的加載,所謂內(nèi)部數(shù)據(jù)就是一套JSON文件和圖片)。
需求:
做一套生成他規(guī)定的內(nèi)部數(shù)據(jù)的工具,要所見(jiàn)即所得,至少也要和他展現(xiàn)形式差不多的形式(HTML頁(yè)面)進(jìn)行編輯保存,PHP編寫(xiě),支持導(dǎo)入導(dǎo)出。
設(shè)計(jì)思路:
拋棄書(shū)先不談(因?yàn)榇鎯?chǔ)格式未定),理論上:頁(yè)面和文本塊,圖片本身是樹(shù)狀結(jié)構(gòu),然后多個(gè)頁(yè)面構(gòu)成一個(gè)知識(shí)點(diǎn),多個(gè)知識(shí)點(diǎn)構(gòu)成一本書(shū),從結(jié)構(gòu)上看樹(shù)狀結(jié)構(gòu),如果要導(dǎo)入這樣的數(shù)據(jù)進(jìn)行編輯,那么我的思路是首先構(gòu)造這樣的樹(shù)(在內(nèi)存里)之后繪制他們。
頁(yè)面的繪制:
調(diào)用頁(yè)面類(lèi)的show方法。如果要繪制頁(yè)面那么先構(gòu)造一個(gè)頁(yè)面的DOM樹(shù),之后往這個(gè)DOM樹(shù)上掛載控件,給控件賦值(控件自己的show方法)。
知識(shí)點(diǎn)的繪制:
一個(gè)知識(shí)點(diǎn)其實(shí)就是頁(yè)集合,那么我會(huì)繪制***個(gè)頁(yè)面(show里調(diào)用***個(gè)子對(duì)象的show),并在頁(yè)面上添加一個(gè)導(dǎo)航條可以上下頁(yè)滾動(dòng)(調(diào)用指定頁(yè)的show)。
書(shū)本的繪制:
這里直接調(diào)用知識(shí)點(diǎn)的show會(huì)有點(diǎn)問(wèn)題,因?yàn)橹R(shí)點(diǎn)的滾動(dòng)需要一個(gè)導(dǎo)航條,頁(yè)的滾動(dòng)又要一個(gè)導(dǎo)航條,我有個(gè)不成熟的想法,如果這樣,我可以讓對(duì)象自己的show沒(méi)有實(shí)現(xiàn)方法,使用一個(gè)show對(duì)象進(jìn)行繪制,這樣我就可以使同一個(gè)對(duì)象在不同的上下文里有不同的繪制方式
整體上看,就是一個(gè)組合設(shè)計(jì)模式,一個(gè)解析器,一個(gè)DOM操作對(duì)象(用接口封裝,使得可以透明的選擇不同第三方的庫(kù))
結(jié)果:
老大覺(jué)得,你丫這么麻煩干嘛,寫(xiě)一個(gè)操作界面,每個(gè)操作用ajax解決,服務(wù)端不要架構(gòu),用各個(gè)小函數(shù)解決
問(wèn)題:請(qǐng)大家客觀分析真的有問(wèn)題嗎?
架構(gòu)設(shè)計(jì)圖:
原文鏈接:http://www.cnblogs.com/kill-signal/archive/2013/03/19/2970219.html