第一章 FBReader源码分析(四)---数据之源Model分析.pdf

第一章 FBReader源码分析(四)---数据之源Model分析.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FFBBRReeaaddeerr源源码码分分析析 ((四四))数数据据之之源源MMooddeell分分析析 FFBBRReeaaddeerr源源码码分分析析 ((四四))数数据据之之源源MMooddeell分分析析 创创建建时时间间::2012/06/15 10 :32 创创建建时时间间:: 更更新新时时间间::2012/06/15 17:06 更更新新时时间间:: 作作 者者::陆再谋(nil) 作作 者者:: 来来 源源::http :// 来来 源源:: 一、万事开头难 正所谓 “巧妇难为 ,无米之炊”。FBReader要想实现能够支持各种文件格式 ,就需要对来源的数据进 行规整化处理 ,结构化出自己需要数据。求同存异 ,抽象出相同的特性为父类 ,而子类保持各自的特性。 大家可以想象 ,FBReader打开txt和epub文件 ,它们本身结构就不一样 ,但是在界面渲染显示的时 候 ,发现它们有什么特别的不同。确实是这样的 ,FBReader要想实现对各种格式的支持 ,就需要对这些文 件格式的数据进行分析。txt比较简单 ,都是文本 ;epub就复杂多了 ,不但有文本 ,还有图像 ,超链接等。 所以 ,可以认为txt是epub的子集。 FBReader就抽象出一种标识 :  也就是上面的接口,FBReader读取txt的话 ,只要在保存到自己缓存的时候在每段的前面加一个标 签 “TEXT就可以 ;而epub的话 ,碰到一段 (p) ,也是用TEXT作为标签 ,而解析的时候碰到了img, 那么保存到自己缓存文件的时候前面就加IMGE,同理 ,链接的话就是”CONTROL等。 所以这个Model的工作就是实现对不同格式的数据 ,规整出FBReader自定义的结构想要的数据 ,并且 能保存读取。 二、Model内容数据之来源 在第三篇文章中,留了一个Model结构没有详细解析 ,那么这篇就彻底把Model阐述。  包名 :packageorg.geometerplus.fbreader.fbreader; 类名 :publicfinalclassFBReaderAppextendsZLApplication 方法voidopenBookInternal(finalBookbook,finalBookmarkbookmark) 代码 : Model=BookModel.createModel(book); 按Ctrl键的同时点击createModel方法 (谨记这个操作),就能跟过去 ,会跑到类BookModel的静态 方法createModel上。 方法 :publicstaticBookModelcreateModel(Bookbook) 功能 :根据插件 ,判断出属于那种格式 ,然后会先判断是否采用本地C生成Model还是用Java生成 Model (简单就这么说咯)一个是NativeBookModel,一个是PlainBookModel。然后插件 对Model进行初始化。  按Ctrl键同时点击createModel方法里的plugin.readModel(model)函数 ,跟下去 (以后我就直接说 跟某某函数咯)。 好 ,跑到了抽象类FormatPlugin里的一个抽象方法readModel(BookModel); 查看这个抽象方法在哪里实现的 ! 按Ctrl+T (一起按)(谨记此操作),会出现如下截图 :  发现弹出的提示框中有一个OEBPlugin,那就是epub对readModel方法的实现了。点击提示框中 的 “OEBPlugin,看看到底如何实现readModel方法的。 包名 :packageorg.geometerplus.fbreader.formats.oeb 类名 :publicclassOEBPluginextendsFormatPlugin 方法 :publicbooleanreadModel(BookModelmodel)  这段代码会判断生成一个ZLFile的对象 ,然后mo

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档