日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三层之抽象工厂加反射实例

發(fā)布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三层之抽象工厂加反射实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
C#版的三層登陸實例,只是為了學(xué)習(xí)三層而實現(xiàn)的。為了接下來需要進(jìn)行的vb.net版機(jī)房收費系統(tǒng)。根據(jù)上次的C#改編的vb.net版本登陸實例。不過在驗收的時候發(fā)現(xiàn)了很多問題,所以進(jìn)行了修改。

???花費好幾天的時間,終于從C#轉(zhuǎn)化成了vb.net版本。期間參考了一些師哥師姐的博客來理解三層是如何交互的。

起初上一篇實例,并不是很懂,只是理解了個大概。然后根據(jù)那么多材料來進(jìn)行對比。終于看懂他們是怎么進(jìn)行操作的。就說看了那么多不同樣式的實例之后,才知道誰的設(shè)計方案更好。知識是不變的,但是設(shè)計理念就能看出代碼執(zhí)行效率的高低。

?

???在使用三層的過程中,才能真正體會到,什么叫高內(nèi)聚,低耦合。在程序發(fā)現(xiàn)錯誤之后,能把錯誤的細(xì)節(jié)定位到具體一層,甚至具體一類。僅僅修改或更換這一類就能調(diào)試出來。使得調(diào)試代碼的量變的極底。這就是使用三層的好處吧。

???以下是本實例的設(shè)計,這個實例是模仿上篇實例得到的。所以名稱有些不規(guī)范,請見諒。

?

數(shù)據(jù)庫還是使用的上次的數(shù)據(jù)可,沒有變動。

?

通過對實例的不斷分解,單一職責(zé)劃分。得到下圖的引用關(guān)系。

?

接下來看一下各個層次的代碼:

?

UI層:

?

[vb] view plaincopy
  • Public?Class?Form1??
  • ??
  • ????Private?Sub?btnLogin_Click(sender?As?Object,?e?As?EventArgs)?Handles?btnLogin.Click??
  • ????????Try??
  • ????????????Dim?user1?As?New?Login.Moudel.UserInfoEntity??
  • ????????????Dim?user2?As?New?Login.Moudel.UserInfoEntity????'使用user2來進(jìn)行登陸??
  • ??
  • ????????????user2.USERNAME?=?txtUserName.Text.Trim??
  • ????????????user2.PASSWORD?=?txtPassword.Text??
  • ??
  • ????????????Dim?mgr?As?New?Login.BLL.LoginManager??
  • ????????????user1?=?mgr.SelectUserLogin(user2)??????'將登陸返回的結(jié)果存放到user1中??
  • ??
  • ????????????MessageBox.Show("登陸用戶:"?+?user1.USERNAME)???????'通知用戶登陸成功??
  • ????????Catch?ex?As?Exception??
  • ????????????MessageBox.Show(ex.Message.ToString())??????'登陸失敗,通知用戶??
  • ????????End?Try??
  • ??
  • ????End?Sub??
  • ??
  • ????'退出系統(tǒng)??
  • ????Private?Sub?btnExit_Click(sender?As?Object,?e?As?EventArgs)?Handles?btnExit.Click??
  • ????????End??
  • ????End?Sub??
  • End?Class??

  • B層:

    [vb] view plaincopy
  • Public?Class?LoginManager??
  • ????Function?SelectUserLogin(ByVal?User?As?Login.Moudel.UserInfoEntity)?As?Login.Moudel.UserInfoEntity??
  • ????????Dim?bUser?As?LoginIDAL.IUser??
  • ????????bUser?=?Factory.DataAccess.CreateUser()??
  • ??
  • ????????Dim?rUser?As?New?Login.Moudel.UserInfoEntity?????'定義一個數(shù)據(jù)實體??
  • ??
  • ????????rUser?=?bUser.SelectUser(User)???????'根據(jù)參數(shù)?查找數(shù)據(jù)庫??并返回一個實體??
  • ??
  • ??
  • ????????If?IsNothing(rUser.USERNAME)?Then???????'判斷用戶名是否存在??
  • ????????????Throw?New?Exception("用戶名?不存在")??
  • ????????End?If??
  • ??
  • ????????If?rUser.PASSWORD?=?User.PASSWORD?Then??'判斷密碼是否正確??
  • ????????????Return?rUser??
  • ????????Else??
  • ????????????Throw?New?Exception("登陸失敗,請檢查用戶名密碼")??
  • ????????End?If??
  • ????End?Function??
  • End?Class??
  • D層:

    [vb] view plaincopy
  • Public?Class?DbConnStr??
  • ????Public?Shared?Function?Connstring()?As?String??
  • ????????Connstring?=?"Server=zc-pc;Database=UBDLogin;User?ID=sa;?Password=123456"??
  • ????End?Function??
  • End?Class??
  • ?

    [vb] view plaincopy
  • Imports?System.Data.SqlClient??
  • Imports?System.Data??
  • ??
  • Public?Class?SqlServerDAO?:?Implements?LoginIDAL.IUser??
  • ????Function?SelectUser(ByVal?user?As?Login.Moudel.UserInfoEntity)?As?Login.Moudel.UserInfoEntity?Implements?LoginIDAL.IUser.SelectUser??
  • ????????Dim?conn?As?New?SqlConnection???????????'創(chuàng)建鏈接對象??
  • ?????????Dim?cmd?As?New?SqlCommand???????????????'創(chuàng)建命令對象??
  • ????????conn?=?New?SqlConnection(DbConnStr.Connstring())????'鏈接數(shù)據(jù)庫??
  • ????????cmd.Connection?=?conn??
  • ??
  • ????????cmd.CommandText?=?"Select?*?from?Users?Where?UserName=@UserName"?'?and?Password=@Password"??
  • ????????cmd.Parameters.Add(New?SqlParameter("@UserName",?user.USERNAME))??
  • ????????'cmd.Parameters.Add(New?SqlParameter("@Password",?user.PASSWORD))??
  • ????????cmd.CommandType?=?CommandType.Text??
  • ????????conn.Open()??
  • ??
  • ????????Dim?reader?As?SqlDataReader?=?cmd.ExecuteReader????????'執(zhí)行生成一個dataReader??
  • ????????Dim?rUser?As?New?Login.Moudel.UserInfoEntity????????????'用于保存返回實體??
  • ??
  • ????????While?(reader.Read())??
  • ????????????rUser.USERNAME?=?reader.GetString(1)??
  • ????????????rUser.PASSWORD?=?reader.GetString(2)??
  • ????????????rUser.LEVEL?=?reader.GetString(3)??
  • ????????????rUser.EMAIL?=?reader.GetString(4)??
  • ????????End?While??
  • ??
  • ????????Return?rUser????'返回取出得到的實體??
  • ????????conn.Close()??
  • ??
  • ????End?Function??
  • End?Class??
  • IDAL:


    ?

    [vb] view plaincopy
  • Public?Interface?IFactory??????????'工廠類??
  • ????Function?CreateUser()?As?LoginIDAL.IUser??
  • End?Interface??
  • [vb] view plaincopy
  • Public?Interface?IUser??
  • ????Function?SelectUser(ByVal?user?As?Login.Moudel.UserInfoEntity)?As?Login.Moudel.UserInfoEntity??
  • End?Interface??

  • Entity:

    [vb] view plaincopy
  • Public?Class?UserInfoEntity??
  • ????Private?_userID?As?String??
  • ????Private?_userName?As?String??
  • ????Private?_password?As?String??
  • ??
  • ????Public?Property?USERNAME()?As?String?????'屬性用戶名??
  • ????????Get??
  • ????????????Return?_userName??
  • ????????End?Get??
  • ????????Set(value?As?String)??
  • ????????????_userName?=?value??
  • ????????End?Set??
  • ????End?Property??
  • ??
  • ????Public?Property?PASSWORD()?As?String???'屬性用戶名密碼??
  • ????????Get??
  • ????????????Return?_password??
  • ????????End?Get??
  • ????????Set(value?As?String)??
  • ????????????_password?=?value??
  • ????????End?Set??
  • ????End?Property??
  • ??
  • ??
  • End?Class??
  • 總結(jié):三層架構(gòu),只是一種設(shè)計理念。幫助我們來優(yōu)化代碼,降低代碼之間的耦合。僅僅通過幾天的學(xué)習(xí),是不可能全部掌握的。這種東西,就好比學(xué)習(xí) 面向?qū)ο蟮?思想, 需要在長期的實踐 應(yīng)用中,才能體會到里面的精髓。

    總結(jié)

    以上是生活随笔為你收集整理的三层之抽象工厂加反射实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产女在线 | 狠狠操在线观看 | 亚洲男同视频 | 国产精品久久久久久久专区 | 亚洲三级视频 | 国产综合网站 | 日韩精品一区二区三区中文在线 | 人妻精品一区二区三区 | 国产精品夜夜 | 日韩精品tv| 美女四肢被绑在床扒衣 | 三级影片在线免费观看 | 野花成人免费视频 | 日本免费在线观看视频 | 久久久成人精品 | 欧美影院一区二区三区 | 国产视频在线看 | 五月天一区二区三区 | 久久3p| 青娱乐在线免费视频 | 色偷偷噜噜噜亚洲男人 | 欧美特黄一级 | 日本不卡一区视频 | 久久久国产精品久久久 | 中国免费看的片 | 男人天堂网在线视频 | 国内外免费激情视频 | 国产第6页 | 深夜免费在线视频 | 冲田杏梨av | 欧美视频在线观看视频 | 超碰天天操 | 日日噜噜噜噜久久久精品毛片 | 97超碰人人模人人人爽人人爱 | 张津瑜国内精品www在线 | 亚洲成人网页 | 91丨porny| 天堂成人av | 中文字字幕一区二区三区四区五区 | 3d动漫精品啪啪一区二区下载 | 日产久久久久久 | 2021久久 | 一级黄色在线播放 | 伊人一区二区三区 | 亚洲天堂区 | 熟女性饥渴一区二区三区 | 午夜视频免费观看 | www.九色| 久色精品视频 | 毛片网站免费在线观看 | 伊人久久一区二区三区 | 人妻熟女一区 | 国产精品呻吟久久 | 亚洲精品视频大全 | 美女毛片网站 | 亚洲精品久久久久久久蜜桃 | 午夜天堂精品久久久久 | 亚洲欧洲一区二区在线观看 | 日韩精品视频在线观看免费 | 91精品在线一区 | 亚洲永久无码精品一区二区 | 日韩aⅴ视频 | 亚洲欧美一区二区三区 | 国产a一区 | 国产欧美一区二区三区鸳鸯浴 | 日日噜噜噜夜夜爽爽狠狠视频97 | 人妖性生活视频 | 久久婷婷影院 | 色婷婷av一区二区 | 美丽的姑娘在线观看免费 | 91婷婷色| 白丝女仆被免费网站 | 一起草视频在线播放 | a级黄片毛片 | 91自啪| 日韩欧美中文字幕在线播放 | 97伦伦午夜电影理伦片 | 日韩黄色在线观看 | 免费黄色成人 | 操操操操网 | 免费av一区二区 | 成人黄色一级视频 | 男女污污视频在线观看 | 巨乳女教师的诱惑 | 黄色片免费在线 | 午夜国产一区二区 | 久久精品99久久久久久久久 | 国产一区二区av | 青青青国产 | 永久免费黄色 | 亚洲av无码一区二区三区性色 | 九一精品一区 | 偷拍欧美亚洲 | 亚洲天堂2024| 欧美日韩在线观看成人 | 97人人爱 | 131美女爱做视频 | 国产一级二级三级在线观看 | 国产免费久久久 |