Ⅰ mvc設計模式和mvc框架的區別
之前總是混淆MVC表現模式和三層架構模式,為此記錄下。
三層架構和MVC是有明顯區別的,MVC應該是展現模式(三個加起來以後才是三層架構中的UI層) 三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了「高內聚,低耦合」的思想。 1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。 2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。 3、數據訪問層(DAL):該層所做事務直接操作資料庫,針對數據的增添、刪除、修改、更新、查找等。
MVC是 Model-View-Controller,嚴格說這三個加起來以後才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。
mvc可以是三層中的一個表現層框架,屬於表現層。三層和mvc可以共存。 三層是基於業務邏輯來分的,而mvc是基於頁面來分的。 MVC主要用於表現層,3層主要用於體系架構,3層一般是表現層、中間層、數據層,其中表現層又可以分成M、V、C,(Model View Controller)模型-視圖-控制器
曾把MVC模式和Web開發中的三層結構的概念混為一談,直到今天才發現一直是我的理解錯誤。MVC模式是GUI界面開發的指導模式,基於表現層分離的思想把程序分為三大部分:Model-View-Controller,呈三角形結構。Model是指數據以及應用程序邏輯,View是指 Model的視圖,也就是用戶界面。這兩者都很好理解,關鍵點在於Controller的角色以及三者之間的關系。在MVC模式中,Controller和View同屬於表現層,通常成對出現。Controller被設計為處理用戶交互的邏輯。一個通常的誤解是認為Controller負責處理View和Model的交互,而實際上View和Model之間是可以直接通信的。由於用戶的交互通常會涉及到Model的改變和View的更新,所以這些可以認為是Controller的副作用。
MVC是表現層的架構,MVC的Model實際上是ViewModel,即供View進行展示的數據。 ViewModel不包含業務邏輯,也不包含數據讀取。 而在N層架構中,一般還會有一個Model層,用來與資料庫的表相對應,也就是所謂ORM中的O。這個Model可能是POCO,也可能是包含一些驗證邏輯的實體類,一般也不包含數據讀取。進行數據讀取的是數據訪問層。而作為UI層的MVC一般不直接操作數據訪問層,中間會有一個業務邏輯層封裝業務邏輯、調用數據訪問層。UI層(Controller)通過業務邏輯層來得到數據(Model),並進行封裝(ViewModel),然後選擇相應的View。
MVC本來是存在於Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。 MVC如何工作 MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。 視圖V 視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,XML/XSL,WML等一些標識語言和Web services. 如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據並允許用戶操縱的方式。 模型M 模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。 控制器C 控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後再確定用哪個視圖來顯示返回的數據。
模型Model 模型是應用程序的主體部分。模型表示業務數據,或者業務邏輯. 實現具體的業務邏輯、狀態管理的功能。 視圖View 視圖是應用程序中用戶界面相關的部分,是用戶看到並與之交互的界面。 就是與用戶實現交互的頁面,通常實現數據的輸入和輸出功能。 控制器controller 控制器工作就是根據用戶的輸入,控制用戶界面數據顯示和更新model對象狀態。起到控制整個業務流程的作用,實現View層跟Model層的協同工作。
3層架構指:表現層(顯示層) 業務邏輯層 數據訪問層(持久化)如果大家非要「生搬硬套」把它和MVC扯上關系話那我就只能在這里"強扭這個瓜"了即: V 3層架構中"表現層"aspx頁面對應MVC中View(繼承的類不一樣) C 三層架構中"表現層"的aspx.cs頁面(類)對應MVC中的Controller,理解這一點並不難,大家想一想我們以前寫過的 Redirect,當然它本身就是跳轉了一些鏈接頁面,而MVC中的Controller要做的更爽,它控制並顯示輸出了一個視圖。即然所起到的作用都是對業務流程和顯示信息的控制,只不過是實現手段不同而已。 M 3層架構中業務邏輯層和數據訪問層對應MVC中Model(必定View和Controller已找到「婆家」剩下Model只能是業務邏輯層和數據訪問層了)
為什麼要使用 MVC 大部分Web應用程序都是用像ASP,PHP,或者CFML這樣的過程化(自PHP5.0版本後已全面支持面向對象模型)語言來創建的。它們將像資料庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。 首先,最重要的一點是多個視圖能共享一個模型,現在需要用越來越多的方式來訪問你的應用程序。對此,其中一個解決之道是使用MVC,無論你的用戶想要Flash界面或是 WAP 界面;用一個模型就能處理它們。由於你已經將數據和業務規則從表示層分開,所以你可以最大化的重用你的代碼了。 由於模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用HTML來表示,但是它們也有可能要用Adobe Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。 因為模型是自包含的,並且與控制器和視圖相分離,所以很容易改變你的應用程序的數據層和業務規則。如果你想把你的資料庫從MySQL移植到Oracle,或者改變你的基於RDBMS數據源到LDAP,只需改變你的模型即可。一旦你正確的實現了模型,不管你的數據來自資料庫或是LDAP伺服器,視圖將會正確的顯示它們。由於運用MVC的應用程序的三個部件是相互獨立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的松耦合的構件。 對我來說,控制器也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然後選擇視圖將處理結果顯示給用戶。
拿一個簡單的登陸模塊說,需求是你輸入一個用戶名、密碼,如果輸入的跟預先定義好的一樣,那麼就進入到正確頁面,如果不一樣,就提示個錯誤信息「你Y別在這兒蒙我,輸入的不對!」。 V 這個小小的模塊中,起始的輸入用戶名密碼的頁面跟經過校驗後顯示的頁面就相當於View C 而這里還需要一個controller頁面,就是用於接收輸入進來的用戶名密碼,還有經過校驗後返回的一個flg(此flg就是用於判斷你輸入的是否正確,而跳轉到相應的頁面的) M 最後還缺一個Model,那麼就是你那個用於校驗的類了,他就是處理你輸入的是否跟預先訂好的一樣不一樣的,之後返回一個flg。 這樣就完全實現了邏輯跟頁面的分離,我頁面不管你咋整,反正我就一個顯示,而controller呢也不管你Model咋判斷對不對,反正我給你了用戶名跟密碼,你就得給我整回來一個flg來,而Medol呢,則是反正你敢給我個用戶名跟密碼,我就給你整過去個flg
m 提供數據,數據之間的關系,轉化等。並可以通知視圖和控制器自己哪些地方發生了變化。 v 提供顯示,能根據m的改變來更新自己 c 比如視圖做了點擊一個按鈕,會先發給這個視圖的控制器,然後這個控制器來決定做什麼操作(讓模型更新數據,控制視圖改變) mvc是一個復合模式 mv,mc都是觀察者模式 m內部的組件組合模式 vc之間是策略模式(可以隨時更換不同的控制器)
MVC模式是上世紀70年代提出,最初用於Smalltalk平台上的。 MVC是表現模式,是用來向用戶展現的許多組建的一個模式(UI/Presentation Patten) MVC有三種角色: Model:用來儲存數據的組件(與領域模型概念不同,兩者會相互交叉) View:從Model中獲取數據進行內容展示的組件。同樣的Model在不同的View下可展示不同的效果。獲取Model的狀態,而不對其進行操作。 Controller:接受並處理用戶指令(操作Model(業務)),選擇一個View進行操作。
MVC概述:協作 存在單向引用,例如Model不知道View和Controller的存在。View不知道Controller的存在。這就隔離了表現和數據。View和controller是單向引用。而實際中View和Controller也是有數據交互的。
MVC的重要特點是分離。兩種分離: View和數據(Model)的分離 使用不同的View對相同的數據進行展示;分離可視和不可視的組件,能夠對Model進行獨立測試。因為分離了可視組件減少了外部依賴利於測試。(資料庫也是一種外部組件) View和表現邏輯(Controller)的分離 Controller是一個表現邏輯的組件,並非一個業務邏輯組件。MVC可以作為表現模式也可以作為建構模式,意味這Controller也可以是業務邏輯。分離邏輯和具體展示,能夠對邏輯進行獨立測試。
MVC和三層架構 MVC與三層架構類似么? View-UI Layer | Controller-Bussiness Layer | Model-Data Access Layer 其實這樣是錯誤的 MVC是表現模式(Presentation Pattern) 三層架構是典型的架構模式(Architecture Pattern) 三層架構的分層模式是典型的上下關系,上層依賴於下層。但MVC作為表現模式是不存在上下關系的,而是相互協作關系。即使將MVC當作架構模式,也不是分層模式。MVC和三層架構基本沒有可比性,是應用於不同領域的技術。
MVC模式與三層架構:
ui (view)←(contorller)
***********************
bll (model)
***********************
dal (model)
Ⅱ 安卓開發的入門書籍大家推薦幾本
1、《GoogleAndroidSDK開發範例大全》
《GoogleAndroidSDK開發範例大全》是2010年人民郵電出版社出版的圖書。全書共分10章,主要以範例集的方式來講述Android的知識點,詳細介紹了開發Android的人機交互界面、Android常用的開發控制項、使用Android手機收發簡訊等通信服務。
2、《Android軟體安全權威指南》
本書主要介紹Android平台上的軟體安全技術。從平台搭建和語言基礎開始,循序漸進地講解了Android平台上的軟體攻防技術。本書共12章,系統地講解了與Android軟體安全相關的環境搭建、文件格式、靜態分析、動態調試、Hook與注入、軟體保護技術、軟體殼等多個主題。
3、《Android開發精要》
《Android開發精要》是2012年機械工業出版社出版的圖書,作者是范懷宇。該書講述的是如何才能寫出貼近Android設計理念、能夠更加高效和可靠運行的Android應用,通過Android的源代碼去了解其底層實現細節是最重要的方法之一。
4、《Android應用性能優化》
《Android應用性能優化》是2012年人民郵電出版社出版的圖書,作者是[法] Hervé Guihot。本書主要介紹如何快速高效地優化應用,讓應用變得穩定高效。
5、《Android應用UI設計模式》
《Android應用UI設計模式》面向Android 4.0+操作系統,是市面上第一本深入解析Android界面設計的佳作。《Android應用UI設計模式》從適用於移動設備和平板的通用模式以及Android UI設計指南出發。
參考資料來源:
網路—《GoogleAndroidSDK開發範例大全》
網路—《Android軟體安全權威指南》
網路—《Android開發精要》
網路—《Android應用性能優化》
網路—《Android應用UI設計模式》
Ⅲ android studio怎麼看設計模式
方法/步驟
首先看看剛創建完的項目界面,除了菜單欄、工具欄等,沒有什麼可以編輯的界面
通過項目的文件瀏覽器可以打開所有項目文件,所以文件管理器在整個開發過程中相當重要。
其中用到最多的便是app項,其餘大部分是軟體自動執行或生成相關文件;
External libraries用來保存外部導入的類庫,用到的時候可以進行調用。
在app項下麵包含了項目創建所需的資源和配置文件:
首先打開layout,在src-》main-》res-》layout下,這是安卓app的界面設計文件,所有的界面都可以通過這里的xml文件生成
雙擊xml文件打開設計界面,關於layout的具體設計以後再講,這里僅介紹如何打開layout。
項目的菜單設計在menu項下的xml文件中定義和設計。
字元串文件也是項目中重要的文件,在app開發過程中會用到很多字元串數據,建議大家都在strings.xml中定義好以後再調用,這樣在漢化或者轉化為他國語言時,只要備份strings.xml文件,然後替換成中文或他國文字就可以了。其實這就是其他國家軟體漢化成中文的途徑。
軟體圖標的設計也是非常重要的,這就是UI設計的目的所在,所有圖片文件都應保存在drawable-xxxx文件下
另外一個重要文件就是AndroidManifest.xml,這里定義了項目的打包名稱;項目的標題、主題、圖標以及所有的活動項,各種訪問許可權的設置等等都在這里設置。
接下來是安卓開發最重要的部分,活動程序的編寫部分,所有app都至少包含一個activity,這里用來實現app所需的功能,完成功能代碼的編寫,這里可以調用其他文件中定義的資源對界面進行訪問,對接收器或發生器進行讀寫等等
最後講講R文件,R文件在app->build->source->r->debug下的第二個文件夾下,用來存放所有activity、layout、控制項等資源的定義,這是軟體自動生成的,不需要修改也不允許修改,在編程過程中一般通過R.id.xxx來訪問資源。
Ⅳ MVC設計模式是什麼怎麼理解
什麼是MVP
View :是指顯示數據並且和用戶交互的層。在安卓中,它們可以是一個Activity,一個Fragment,一個android.view.View或者是一個Dialog。
Model :是數據源層。比如資料庫介面或者遠程伺服器的api。
Presenter:是從Model中獲取數據並提供給View的層,Presenter還負責處理後台任務。
MVP是一個將後台任務和activities/views/fragment分離的方法,讓它們獨立於絕大多數跟生命周期相關的事件。這樣應用就會變得更簡單,整個應用的穩定性提高10倍以上,代碼也變得更短,可維護性增強,程序員也不會過勞死了~~。
為什麼要在安卓上使用MVP原因一: 盡量簡單
如果你還沒有閱讀過這篇文章,閱讀它: Kiss原則(https://people.apache.org/%7Efhanik/kiss.html)。- kiss是Keep It Stupid Simple或者Keep It Simple, Stupid的縮寫。
.絕大多數的安卓程序都只使用了View-Model架構。
.程序員被絞盡了復雜的界面開發中,而不是解決事務邏輯。
在應用中使用Model-View的壞處是「每個東西之間都是相互關聯的」如下圖:
如果上面的圖解看起來還不夠復雜,那麼想想這些情況:每個view可能在任意的時間出現或者消失,view數據需要保存與恢復,在臨時的view上掛載一個後台任務。
而與「每個東西之間都是相互關聯的」的相反選擇是使用一個萬能對象(god object)。註:god object是指一個對象/常式在系統中做了太多的事情,或者說是有太多不怎麼相關的事情放在一個對象/常式裡面來完成。
god object過於復雜,他的不同部分無法重用、測試,無法輕易的debug和重構。
使用MVP
復雜的任務被分割成簡單的任務。
.更小的對象,更少的bug。
.更好測試
MVP的view層變得如此簡單,在請求數據的時候甚至不需要使用回調。view的邏輯變得非常直接。
原因二: 後台任務
當你需要寫一個Activity,Fragment或者一個自定義View的時候,你可以將所有和後台任務相關的方法放在一個外部的或者靜態的類中。這樣你的後台任務就不會再與Activity相關聯,不會在泄漏內存同時也不會依賴於Activity的重建。我們稱這樣的一個類為「Presenter」。註:要理解此話的含義最好先看懂第一個MVP示例的代碼。
雖然有一些方法可以解決後台任務的問題,但是沒有一種和MVP一樣可靠。
為什麼這是可行的
下面的圖解顯示了在configuration改變或者發生out-of-memory事件的情況下應用的不同部分所發生的事情。每一個開發者都應該知道這些數據,但是這些數據並不好發現。
| Case 1 | Case 2 | Case 3
|A configuration| An activity | A process
| change | restart | restart
---------------------------------------- | ------------- | ------------ | ------------
Dialog | reset | reset | reset
Activity, View, Fragment | save/restore | save/restore | save/restore
Fragment with setRetainInstance(true) | no change | save/restore | save/restore
Static variables and threads | no change | no change | reset
情景1:configuration的改變通常發生在旋轉屏幕,修改語言設置,鏈接外部的模擬器等情況下。要知道更多的configuration change事件請閱讀:configChanges(developer.android.com/reference/android/R.attr.html#configChanges)。
情景2:Activity的重啟發生在當用戶在開發者選項中選中了「Don't keep activities」(「中文下為 不保留活動」)的復選框,然後另一個Activity在最頂上的時候。
情景3:進程的重啟發生在應用運行在後台,但是這個時候內存不夠的情況下。
結論
現在你可以發現,一個擁有setRetainInstance(true)的Fragment並沒有帶來幫助 - 我們還是要保存和/恢復這種fragment的狀態。因此我們可以去掉可保持Fragment的情景,把問題簡單化。Occam's razor(https://en.wikipedia.org/wiki/Occam%27s_razor)
Ⅳ Asp.net MVC下怎麼實現購物車功能
我覺得購物車用Cookie實現最好,因為現在瀏覽器都支持了而且不用佔用伺服器資源也就是說專,你用mvc的話屬, 用什麼都無所謂了,因為基本上是js的操作,
建議用JQuery操作Cookie,直接有這插件的
Ⅵ 開發安卓需要怎樣的java基礎
Android應用程序開發是以Java語言為基礎的,所以需要有扎實的Java基礎知識。首先熟悉java基本語法,然後熟悉設計模式等。
a) Java基礎語法:看下面的《Java知識點列表》
b)設計模式:由於在Android系統的框架層當中,使用了大量的設計模式,如果沒有這個方面的知識,對於Android的理解就會大打折扣。設計模式的種類非常之多(設計模式大概有28種,具體請看設計模式系列 ),一個一個的全部掌握,是不現實的,必須首先掌握面向對象的基礎設計原則,有了這些基礎原則的支持,理解android容易很多。有了這些知識,然後再來學習Android開發,一定會事半功倍。
《Java知識點列表》:
開發環境:
1 Java SDK 下載和安裝
2 環境變數的配置(path和classpath)
編程基礎
3. 標識符命名規范
4 Java數據類型
5 運算符
6 分支語句(if,switch)
7 循環語句(for,while)
8 函數的定義方法
只要是個程序員,都懂。語言之間可以融會貫通。
面向對象基礎
向對象的三個基本特徵是:封裝、繼承、多態
9. 面向對象與面向過程語言之間的區別
10 面向對象基本思想(封裝)
封裝:把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏
11 類的定義方法
12 對象和類的關系
13 對象的創建方法
14 通過對象使用成員變數和成員函數的方法
15 構造函數的作用
16 函數的重載
17 static 的作用
18 this的作用
面向對象高級:
19 面向對象基本思想(繼承)
繼承: 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展
20 繼承的作用
21 繼承的語法特點
22 super的使用方法
23 面向對象基本思想(多態)
多態:是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。
實現多態,有二種方式:覆蓋,重載
24 對象的向上轉型和向下轉型
25 final關鍵字的作用:不能被繼承,也沒有子類
26 抽象類和介面的定義方法
27 介面和抽象類的語法特徵
28 抽象類和介面在面向對象編程當中的地位和意義
29 設計模式(工廠方法模式)
30 Java當中異常的定義
31 異常的分類以及各自的特點
32 try…catch…finally 結構的處理方法
33 throw和throws 的使用方法
深入理解java異常處理機制
34 自定義異常的使用方法
35 內部類的定義方法
36 匿名內部類的定義方法
37 內部類的常見使用方法
線程
38 線程的基本定義
39 在 Java 當中實現線程的兩種方法(使用Thread 或Runnable)
40 線程運行狀態介紹(准備,運行,阻塞,死亡)
41 線程間通信的方法
42 線程同步
43 線程死鎖
這些知識是操作系統的基本內容。查看博文:作業、進程、線程
Java線程
IO
44 IO 基本概念
45 輸入流和輸出流的作用
46 Java當中IO 流的分類方法
47 常見 IO 類的使用方法(File,FileInput,FileOutput,Reader,Writer以及其子類的使用方法)
詳解:JAVA輸入輸出流
常見類庫
48 類 集框架中常見類的使用方法(ArrayList,LinkedList,Queue,Stack,HashSet,HashMap)
49 日期相關類的使用方法(Data,DataFormat,Calander)
50 資料庫關系型資料庫的基本概念
51 SQL 分類
52 DDL,DML,查詢
Ⅶ 求一個購物車項目設計源代碼
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Collections;public partial class AddCar : System.Web.UI.Page{ DataAccess db = new DataAccess(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string id = Request.QueryString["id"].ToString(); if (Session["car"] != null) { Hashtable hash = Session["car"] as Hashtable; if (!hash.ContainsKey(id)) { hash.Add(id, 1); } else { hash[id] = int.Parse(hash[id].ToString()) + 1; } Session["car"] = hash; } else { Hashtable hash = new Hashtable(); hash.Add(id, 1); Session["car"] = hash; } Hashtable k = Session["car"] as Hashtable; DataColumn dc0 = new DataColumn("id", typeof(string)); DataColumn dc1 = new DataColumn("商品名", typeof(string)); DataColumn dc2 = new DataColumn("價格", typeof(float)); DataColumn dc3 = new DataColumn("數量", typeof(int)); DataColumn dc4 = new DataColumn("總價格", typeof(float)); DataTable dt = new DataTable(); dt.Columns.Add(dc0); dt.Columns.Add(dc1); dt.Columns.Add(dc2); dt.Columns.Add(dc3); dt.Columns.Add(dc4); foreach (DictionaryEntry i in k) { //Response.Write(i.Key+" "+i.Value+"<br>"); DataRow dr = dt.NewRow(); DataSet ds = db.QueryDataSet("select * from proct where p_id=" + i.Key); dr["id"] = ds.Tables[0].Rows[0]["p_id"].ToString(); dr["商品名"] = ds.Tables[0].Rows[0]["p_name"].ToString(); dr["價格"] = ds.Tables[0].Rows[0]["p_price"].ToString(); dr["數量"] = int.Parse(k[i.Key].ToString()); dr["總價格"] = int.Parse(k[i.Key].ToString()) * double.Parse(ds.Tables[0].Rows[0]["p_price"].ToString()); dt.Rows.Add(dr); } GridView1.DataSource = dt; GridView1.DataBind(); } } protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("default2.aspx"); } protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string id = GridView1.DataKeys[e.RowIndex].Value.ToString(); Hashtable k = Session["car"] as Hashtable; Session["car"] = k; k.Remove(id); DataColumn dc0 = new DataColumn("id", typeof(string)); DataColumn dc1 = new DataColumn("商品名", typeof(string)); DataColumn dc2 = new DataColumn("價格", typeof(float)); DataColumn dc3 = new DataColumn("數量", typeof(int)); DataColumn dc4 = new DataColumn("總價格", typeof(float)); DataTable dt = new DataTable(); dt.Columns.Add(dc0); dt.Columns.Add(dc1); dt.Columns.Add(dc2); dt.Columns.Add(dc3); dt.Columns.Add(dc4); foreach (DictionaryEntry i in k) { //Response.Write(i.Key+" "+i.Value+"<br>"); DataRow dr = dt.NewRow(); DataSet ds = db.QueryDataSet("select * from proct where p_id=" + i.Key); dr["id"] = ds.Tables[0].Rows[0]["p_id"].ToString(); dr["商品名"] = ds.Tables[0].Rows[0]["p_name"].ToString(); dr["價格"] = ds.Tables[0].Rows[0]["p_price"].ToString(); dr["數量"] = int.Parse(k[i.Key].ToString()); dr["總價格"] = int.Parse(k[i.Key].ToString()) * double.Parse(ds.Tables[0].Rows[0]["p_price"].ToString()); dt.Rows.Add(dr); } GridView1.DataSource = dt; GridView1.DataBind(); } protected void Button2_Click(object sender, EventArgs e) { Hashtable k = Session["car"] as Hashtable; string code = DateTime.Now.Ticks.ToString() + new Random().Next(); db.ExecuteNonQuery("insert into OrderList values('"+code+"')"); foreach(DictionaryEntry i in k) { db.ExecuteNonQuery("insert into DetailsList values('"+code+"',"+Session["u_id"].ToString()+","+i.Key+","+i.Value+")"); } }}自己慢慢領悟把%D%A
Ⅷ 電商安卓app用什麼設計模式好
我覺得因為電商經常性的改方案和界面,建議使用webview的方式來展現界面,具體沒有做過,沒有更多的餓建議了
Ⅸ 安卓客戶端應用開發需要用到設計模式么
不用,跟那沒點關系~
Android有自己的框架組件,要學的只是它的四大組件及程序開發中的設計模式。
設計模式不管在哪都用得著的~
J2EE的SSH三大框架在android里沒有一點影子的~
Ⅹ Android用MVP設計模式適合在什麼時候用,求大神給解釋
醉了,是MVC,反正我沒聽過MVP