Ibatisnet示例:npetshop学习一
生活随笔
收集整理的這篇文章主要介紹了
Ibatisnet示例:npetshop学习一
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當大概的觀看NPetshop的分層架構后,突然發現與上家公司使用的框架異常相似......
??? 今天學習目標是.service .presentation兩層。
一、NPetshop.Presentation
???記得在Peshop4.0中有用到Facde設計模式,可以很好的使用分層結構,Presentation應該也是起這個作用;在Npetshop中,我看這層所屬文件名后都帶有‘Action’字樣,action在這里是什么意思?活動、動態?
???1.UserControl.cs
??? 所有用戶控件都繼承自它。某些子控件中仍有其他子控件,比如startup.ascx就包含了SideBar.ascx子控件,因為Npetshop中是將頁面作為'容器'來設計的,所以必須將子控件的CurrentController指向頁面,便于管理,代碼如下:
??? ?1????????public?IController?CurrentController
?2????????{
?3????????????get
?4????????????{
?5????????????????return?_currentController;
?6????????????}
?7????????????set
?8????????????{
?9????????????????for(int?i=0;?i<?this.Controls.Count;?i++)
10????????????????{
11????????????????????if?(this.Controls[i]?is?NPetshop.Presentation.UserControl)
12????????????????????{
13????????????????????????((NPetshop.Presentation.UserControl)?this.Controls[i]).CurrentController?=?value;
14????????????????????}
15????????????????}
16????????????????this._currentController?=?value;
17????????????}
18????????} ???? UserControl類的IsRequestCurrentView屬性,在ui層的Catelog.ascx.cs 及 productlist.ascx.cs的page_load事件中,通過對該屬性的判斷,將當前產品分類或產品名稱顯示出來(代碼已注釋)。?
???? 該屬性的類型為IController接口,頁面容器繼承自該接口,這種模式不知能否理解為與parent屬性類似。
???? UserControl類還有重要屬性:WebLocalSingleton ,該類位于Npetshop.Presentation.Core命名空間。這是一種單態設計模式,確保每個類只有一個實例,并提供它的全局訪問點 。
?????2.WebLocalSingleton.cs
???? 通過靜態方法以及context上下文信息,以確保在任何時間都只返回一個實例,如代碼: ?1????????private?HttpContext?_context;
?2????????static?readonly?private?object?_synRoot?=?new?Object();
?3
?4????????/**////?<summary>
?5????????///?
?6????????///?</summary>
?7????????///?<param?name="ctx"></param>
?8????????///?<remarks>Call?it?with?HttpContext.Current.ApplicationInstance.Context.</remarks>
?9????????///?<returns></returns>
10????????public?static?WebLocalSingleton?GetInstance(HttpContext?ctx)
11????????{
12????????????WebLocalSingleton?singleton?=?ctx.Items[WebConstants.SINGLETON_KEY]?as?WebLocalSingleton;
13????????????if?(singleton==null)
14????????????{
15????????????????lock(_synRoot)
16????????????????{
17????????????????????if?(singleton?==?null)
18????????????????????{
19????????????????????????singleton?=?new?WebLocalSingleton(ctx);
20????????????????????????ctx.Items[WebConstants.SINGLETON_KEY]?=?singleton;
21????????????????????}
22????????????????}
23????????????}
24
25????????????return?singleton;
26????????} ????? 同時,在該類還保存了當前context下的Action 、Account、ShoppingCart、Order、IPaginatedList 數據,在這里讓我費解的就是為何要將IPaginatedList對象放入到該context中,因為它不需要被全局使用,應該是隨時獲取、釋放的。
???? 未完......
??? 今天學習目標是.service .presentation兩層。
一、NPetshop.Presentation
???記得在Peshop4.0中有用到Facde設計模式,可以很好的使用分層結構,Presentation應該也是起這個作用;在Npetshop中,我看這層所屬文件名后都帶有‘Action’字樣,action在這里是什么意思?活動、動態?
???1.UserControl.cs
??? 所有用戶控件都繼承自它。某些子控件中仍有其他子控件,比如startup.ascx就包含了SideBar.ascx子控件,因為Npetshop中是將頁面作為'容器'來設計的,所以必須將子控件的CurrentController指向頁面,便于管理,代碼如下:
??? ?1????????public?IController?CurrentController
?2????????{
?3????????????get
?4????????????{
?5????????????????return?_currentController;
?6????????????}
?7????????????set
?8????????????{
?9????????????????for(int?i=0;?i<?this.Controls.Count;?i++)
10????????????????{
11????????????????????if?(this.Controls[i]?is?NPetshop.Presentation.UserControl)
12????????????????????{
13????????????????????????((NPetshop.Presentation.UserControl)?this.Controls[i]).CurrentController?=?value;
14????????????????????}
15????????????????}
16????????????????this._currentController?=?value;
17????????????}
18????????} ???? UserControl類的IsRequestCurrentView屬性,在ui層的Catelog.ascx.cs 及 productlist.ascx.cs的page_load事件中,通過對該屬性的判斷,將當前產品分類或產品名稱顯示出來(代碼已注釋)。?
???? 該屬性的類型為IController接口,頁面容器繼承自該接口,這種模式不知能否理解為與parent屬性類似。
???? UserControl類還有重要屬性:WebLocalSingleton ,該類位于Npetshop.Presentation.Core命名空間。這是一種單態設計模式,確保每個類只有一個實例,并提供它的全局訪問點 。
?????2.WebLocalSingleton.cs
???? 通過靜態方法以及context上下文信息,以確保在任何時間都只返回一個實例,如代碼: ?1????????private?HttpContext?_context;
?2????????static?readonly?private?object?_synRoot?=?new?Object();
?3
?4????????/**////?<summary>
?5????????///?
?6????????///?</summary>
?7????????///?<param?name="ctx"></param>
?8????????///?<remarks>Call?it?with?HttpContext.Current.ApplicationInstance.Context.</remarks>
?9????????///?<returns></returns>
10????????public?static?WebLocalSingleton?GetInstance(HttpContext?ctx)
11????????{
12????????????WebLocalSingleton?singleton?=?ctx.Items[WebConstants.SINGLETON_KEY]?as?WebLocalSingleton;
13????????????if?(singleton==null)
14????????????{
15????????????????lock(_synRoot)
16????????????????{
17????????????????????if?(singleton?==?null)
18????????????????????{
19????????????????????????singleton?=?new?WebLocalSingleton(ctx);
20????????????????????????ctx.Items[WebConstants.SINGLETON_KEY]?=?singleton;
21????????????????????}
22????????????????}
23????????????}
24
25????????????return?singleton;
26????????} ????? 同時,在該類還保存了當前context下的Action 、Account、ShoppingCart、Order、IPaginatedList 數據,在這里讓我費解的就是為何要將IPaginatedList對象放入到該context中,因為它不需要被全局使用,應該是隨時獲取、釋放的。
???? 未完......
轉載于:https://www.cnblogs.com/lyamlf123/archive/2007/12/05/983450.html
總結
以上是生活随笔為你收集整理的Ibatisnet示例:npetshop学习一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有關window.showModalDi
- 下一篇: 使用接口改变已经装箱的值类型的字段