因為MVC架構的定義太抽象了,導致只要有分層(model層,view層,controller層),都可以說是MVC,但在Web或App上各層間的互動方式又不太一樣,所以這篇我主要想講的是MVP架構,它也是將程式分成三層(model,view,presenter)。
其中最重要的就是presenter,可以把它想像業務邏輯(business logic)的主要負責人,而view跟model都是由presenter去控制,view跟model彼此不知道對方,而model跟view幾乎不會有業務邏輯,有的部分會經由callback listener在presenter層去實做,如此一來跟平台相關的依賴,就可以推到model或者是view層中,而presenter就可以是純java的狀態,可以輕鬆的跑單元測試,而這單元測試又是測產品中最重要的業務邏輯!而presenter對view與model的依賴也可以改成介面(interface),有了這樣的抽象概念後,對presenter來說,我不管model層如何實做(是android?iOS?web?),只要給我我要的資料就好,也不用管view層如何實做,presenter就是把資料給view層,讓他自己去顯示要顯示的畫面,有了這樣的思維之後,我們是否能借用GWT,J2Objc這樣的工具來達成業務邏輯的跨平台使用呢?
cordova就是view跟presenter由web達成,硬體的依賴抽像給各平台實做的概念。
react native是presenter由javascript實做,view與硬體依賴抽像給各平台實做的概念。
其中最重要的就是presenter,可以把它想像業務邏輯(business logic)的主要負責人,而view跟model都是由presenter去控制,view跟model彼此不知道對方,而model跟view幾乎不會有業務邏輯,有的部分會經由callback listener在presenter層去實做,如此一來跟平台相關的依賴,就可以推到model或者是view層中,而presenter就可以是純java的狀態,可以輕鬆的跑單元測試,而這單元測試又是測產品中最重要的業務邏輯!而presenter對view與model的依賴也可以改成介面(interface),有了這樣的抽象概念後,對presenter來說,我不管model層如何實做(是android?iOS?web?),只要給我我要的資料就好,也不用管view層如何實做,presenter就是把資料給view層,讓他自己去顯示要顯示的畫面,有了這樣的思維之後,我們是否能借用GWT,J2Objc這樣的工具來達成業務邏輯的跨平台使用呢?
cordova就是view跟presenter由web達成,硬體的依賴抽像給各平台實做的概念。
react native是presenter由javascript實做,view與硬體依賴抽像給各平台實做的概念。
留言
張貼留言
有什麼想法歡迎跟我們分享