版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
介绍保证一个类仅有一个实例,并提供一个访问它的全局访问点。示例保证一个类仅有一个实例。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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预算编制的风险管理计划
- 中学学校课堂设计计划
- 中班红烧鱼美术教案
- 早教课程教案 完整版
- 弹性力学优化算法:粒子群优化(PSO):弹性力学优化中的约束处理
- 2017房屋买卖合同范本
- 装修保修合同范本
- 生物制剂对肩关节退变的治疗作用
- 电动汽车电池管理系统优化
- 二甲双胍缓释片对不同类型糖尿病神经病变的影响
- 大单元教学视域下:单元整体教学解读与单篇文本教学解读
- 统编版2024年新版七年级上册历史第二单元测试卷(含答案)
- 团播合作合同范本
- GB 30585-2024童鞋安全技术规范
- IATF16949-COP-内部审核检查表+填写记录
- 2024新《公司法》亮点全面解读课件
- 成都市2022级(2025届)高中毕业班摸底测试(零诊)化学试卷(含答案)
- 培训机构转课协议
- ISO27001:2022信息安全管理标准解析
- 教室改造施工方案
- TD/T 1070.1-2022 矿山生态修复技术规范 第1部分:通则(正式版)
评论
0/150
提交评论