用序列化+单例模式实现数据持久化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用序列化+单例模式实现数据持久化 什么是序列化(Serialization) 序列化可被定义为将对象的状态存储到存储媒介中的过程 序列化:对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流 反序列化:创建原始对象的精确复本 为何使用序列化 将对象的状态永久保存在存储媒体中,以便可以在以后重新创建精确的副本 通过值将对象从一个应用程序域发送到另一个应用程序域中 XML序列化 将对象序列化到 XML 文档中和从 XML 文档中反序列化对象 对象中的数据是用编程语言构造来描述的,如类、字段、属性 Property 、基元类型、数组,甚至 XmlElement 或 XmlAttribute 对象形式的嵌入 XML XML 序列化仅将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息 二进制序列化 BinaryFormatter可以非常有效地为对象生成简洁的字节流 ,对于序列化将在 .NET Framework 上被反序列化的对象而言十分理想(即不需要移植) 在反序列化一个对象时不调用构造函数 如果需要可移植,需要用SoapFormatter 代替 Serializable 属性不能被继承,即使父类有这属性,子类也必须手动添加,若一个对象中包含子对象,子对象也必须是 Serializable 基本序列化 //step1:定义一个支持序列化的类 [Serializable] public class MyObject public int n1 0; public int n2 0; public String str null; //step2:将对象序列化到文件中 MyObject obj new MyObject ; obj.n1 1; obj.n2 24; obj.str Some String; IFormatter formatter new BinaryFormatter ; Stream stream new FileStream MyFile.bin, FileMode.Create, FileAccess.Write, FileShare.None ; formatter.Serialize stream, obj ; stream.Close ; //step3:在需要时从文件中反序列化对象 IFormatter formatter new BinaryFormatter ; Stream stream new FileStream MyFile.bin, FileMode.Open, FileAccess.Read, FileShare.Read ; MyObject obj MyObject formatter.Deserialize stream ; stream.Close ; // Heres the proof. Console.WriteLine n1: 0 , obj.n1 ; Console.WriteLine n2: 0 , obj.n2 ; Console.WriteLine str: 0 , obj.str ; 所需引入的命名空间 using System.IO; using System.Runtime.Serialization.Formatters.Binary; 将序列化用于教务管理系统(1) 需要为所有Model和DAL层的元素打上[Serializable]属性标记 忘记为对象或对象的一部分打上标记会导致反序列化出错,不能正确重构对象 将序列化用于教务管理系统(2) 在DataAccess类中实现所有动态数据的保存和读取 单例模式 教师会查询选课信息,故需要访问TermCourseDAL对象; 学生要选课,也需要访问TermCourseDAL对象 如何保证他们访问的是同一个TermCourseDAL对象以保持数据的一致性? 答案:单例模式——〉对同一个TermCourseDAL对象进行操作 什么是单例模式 单例模式最要关心的则是对象创建的次数以及何时被创建。 单例模式的要点有三个: 该类只能有一个实例; 该类必须自行创建这个实例; 类必须自行向整个系统提供这个实例。 例:获取单一的CourseDAL对象 如果有数据文件,先从数据文件读取所有学生数据;否则就创建一个空的学生列表 其它需要改变的地方 DAL只被BLL层调用 在BLL中不能直接创建DAL层对象,而要调用其静态方法获取唯一实例 例:StudentDAL dal new StudentDAL ; //X 应改成 StudentDAL dal Stude

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档