乐在其中设计模式_第1页
乐在其中设计模式_第2页
乐在其中设计模式_第3页
乐在其中设计模式_第4页
乐在其中设计模式_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

介绍保证一个类仅有一个实例,并提供一个访问它的全局访问点。示例保证一个类仅有一个实例。Single1011^^tenericClass-属性雪Instance:T-■套类型ISingletonCreatar[AClass-字段二,inst:±tlch:T泛型实现单例模式SingletonusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Singleton日田{白中///<summary>I///泛型实现单例模式///</summary>卜///<typeparamname="T">需要实现单例的类</typeparam>publicclassSingleton<T>whereT:new()摊{斡///<summary>I///返回类的实例///</summary>publicstaticTInstance白中{H申get{returnSingletonCreator.instance;}}IclassSingletonCreator摊{internalstaticreadonlyTinstance=newT();b}TestusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingPattern.Singleton;publicpartialclassSingleton:System.Web.UI.Page曰田{protectedvoidPage_Load(objectsender,EventArgse)白中{//使用单例模式,保证一个类仅有一个实例Response.Write(Singleton<Test>.Instance.Time);Response.Write("<br/>");IResponse.Write(Singleton<Test>.Instance.Time);Response.Write("<br/>");I//不用单例模式I Testt=newTest();I Response.Write(t.Time);Response.Write("<br/>");I Testt2=newTest();I Response.Write(t2.Time);Response.Write("<br/>");}}publicclassTest曰田{privateDateTime_time;IIpublicTest()白中{ISystem.Threading.Thread.Sleep(3000);_time=DateTime.Now;}publicstringTime由由{get{return_time.ToString();}}}运行结果2007-2-1022:35:112007-2-1022:35:112007-2-1022:35:142007-2-1022:35:17乐在其中设计模式(C#)-适配器模式(AdapterPattern)介绍将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。示例有一个Message实体类,某个类对它的操作有Insert()和Get()方法。现在需要把这个类转到另一个接口,分别对应Add()和Select()方法。

MessageModelusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Adapter曰田{摊///<summary>I///Message实体类///</summary>publicclassMessageModel摊{斡///<summary>I ///构造函数///</summary>I ///<paramname="msg">Message内容</param>///<paramname="pt">Message发布时间</param>publicMessageModel(stringmsg,DateTimept)白中{this._message=msg;this._publishTime=pt;}privatestring_message;白中///<summary>///Message内容///</summary>publicstringMessage白中{get{return_message;}set{_message=value;}}privateDateTime_publishTime;白中///<summary>I ///Message发布时间///</summary>publicDateTimePublishTime白中{get{return_publishTime;}set{_publishTime=value;}}}}SqlMessageusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Adapter曰田{摊///<summary>I///源(Adaptee)角色I///Sql方式操作Message///</summary>publicclassSqlMessage白中{R申///<summary>I///获取Message///</summary>///<returns></returns>publicList<MessageModel>Get()白中{List<MessageModel>l=newList<MessageModel>();l.Add(newMessageModel("SQL方式获取Message",DateTime.Now));IIreturnl;}摊///<summary>///插入Message///</summary>I///<paramname="mm">Message实体对象</param>///<returns></returns>publicboolInsert(MessageModelmm)摊{〃代码略Ireturntrue;}}}IMessageusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Adapter日田{白中///<summary>I///目标(Target)角色I///操作Message的接口卜///</summary>IpublicinterfaceIMessage{斡///<summary>I ///获取Message///</summary>卜 ///<returns></returns>I List<MessageModel>Select();I白中///<summary>I /// 插入MessageI /// </summary>I /// <paramname="mm">Message实体对象</param>卜 /// <returns></returns>I boolAdd(MessageModelmm);}}MessageusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Adapter曰田{摊///<summary>I///适配器(Adapter)角色I ///类适配器I ///把源适配到这个类///</summary>publicclassMessage:SqlMessage,IMessage摊{斡///<summary>I///获取Message///</summary>///<returns></returns>publicList<MessageModel>Select()百中{returnbase.Get();}摊///<summary>///插入Message///</summary>I///<paramname="mm">Message实体对象</param>///<returns></returns>publicboolAdd(MessageModelmm)摊{returnbase.Insert(mm);}}}Message?usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.Adapter曰田{摊///<summary>I///适配器(Adapter)角色I///对象适配器I///把源适配到这个类///</summary>publicclassMessage?:IMessage摊{privateSqlMessage_sqlMessage;白中///<summary>I///构造函数///</summary>publicMessage2()白中{_sqlMessage=newSqlMessage();}白中///<summary>I///获取Message///</summary>///<returns></returns>publicList<MessageModel>Select()百中{return_sqlMessage.Get();}摊///<summary>///插入Message///</summary>I///<paramname="mm">Message实体对象</param>///<returns></returns>publicboolAdd(MessageModelmm)摊{return_sqlMessage.Insert(mm);}}}clientusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingPattern.Adapter;publicpartialclassAdapter:System.Web.UI.Page曰田{protectedvoidPage_Load(objectsender,EventArgse)白中{IMessagem;I m=newMessage();I Response.Write("类适配器方式<br/>");I Response.Write(m.Add(newMessageModel("插入",DateTime.Now)));Response.Write("<br/>");I Response.Write(m.Select()[0].Message + " " + m.Select()[0].PublishTime.ToString());Response.Write("<br/><br/>");II m=newMessage2();I Response.Write("对象适配器方式<br/>");I Respo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论