项目总结--Version 1.0(三)

可扩展性决定了项目能走多远,可复用行决定了项目走的是否轻快。

本文主要讨论1.0版本的项目在进行设计时对可复用性和可扩展性的思考,涉及了整个项目分层的所有层(想查阅分层相关部分的可以点这:项目总结--Version 1.0(一)项目总结--Version 1.0(二))。

由于经验有限,做过多的扩展容易误导其他人,所以本文所做的一些讨论总结只限在本项目范围内进行,对这个项目在进行架构设计的时候遇到的问题和自己的一些想法在此做一些梳理和总结。

同样的,先从最底层-数据持久层开始说起。先看一下数据持久层的类结构图:

数据持久层类结构图

先分别说一下上述类的作用。

FBServerTool是一个单例,在程序运行的时候就进行初始化,这个类将手机端变成一个服务器,以供设备端对手机端的主动连接,在2.0版本中将此功能移除。

FBSocketTool同样是一个单例,也是在程序运行的时候进行初始化。这个类承担了两个功能,一是发送UDP包,二是提供一个TCP连接。

FBHTTPTool是一个封装了AFNetworking的类,它提供了访问web服务器常用的静态方法,类似AFN,使用了Block回调方式。

FBSOAPTool封装了SOAP协议,SOAP协议是数据交换协议的一种协议规范,基于XML。更具体详细的介绍可以看这:SOAP。通过这层封装,我们在使用SOAP协议的时候就可以不必关系具体的协议规范,像使用普通的HTTP来用即可。

FBWebservice包含了网络相关的宏定义,包括接口地址和Web Service使用的服务和方法。将相关的宏定义放在此处可以很方便的进行修改。

写到这大家应该能看出来某些地方感觉特别不爽,没错,我在开始2.0之前看这部分代码的时候也有这种感觉。到底哪出问题了呢?先看一下类名,***Tool,第一眼看上去感觉这应该是一个工具类,里面的一些方法应该是类方法,但实际上,除了FBHTTPTool,FBSOAPTool,FBWebservice外其他类都是单例!这就有问题了,命名不规范,这会导致其开发者在用到我们这些类的时候需要进入类里面之后才能理解我们是如何设计的,而不能从名字来进行大概的推断哪些是单例,哪些是普通类或者相关的工具类。这在其他开发者分析项目,阅读代码的时候会增加不必要的时间成本。

另外,根据单一职责原则,FBSocketTool类的功能还应该继续进行拆分,在2.0版本中,这个类分成了两个类,一个负责UDP报文收发,一个负责TCP报文收发。

然后就是FBHTTPTool,这个类在2.0的版本中变化挺大的,由之前的类方法变成实例方法。这个类负责将AFN封装然后向上层提供简单的POST和GET方法,网络访问的结果在Block中进行处理。

FBSOAPTool和FBWebservice比较简单,在两个版本中几乎没有变化,在此就略过不谈了。

以上是NET模块的部分,接下来说一下DAO。这个模块最重要的就两个部分,一个是第三方库FMDB,另外一个是JKDBModel。FMDB是一个非常优秀的第三方库,极力推荐大家使用学习。JKDBModel是在FMDB之上又进行封装了的一个轻量级的小框架,和苹果自家的Core Data使用的ORM(对象关系映射)技术比较像,它将类名和数据表,属性和表字段进行映射,能够自动创建数据库和数据表,自动添加新增的表字段,避免了繁琐的SQL语句书写(虽然有时还是需要些一部分,但已经大大减少工作量了)。源码比较简单,大家可以拿来看看,学习一下,作者的思路还是很棒的。

最后说一下数据缓存这一块,这个地方应该是我的硬伤所在,整个项目看着最不顺眼的地方就是它了,在设计这一块的时候没有敢设计的很复杂,只是实现了基本的功能,所以数据缓存这一块还需要花时间专门研究一下。设计思路可以看一下前面的这篇文章

我在进行着一层各个模块的设计的时候尽量的去避免了模块之间横向的访问,模块与模块之间需要遵循一套严格的规范来相互访问,不要让模块之间有太大的耦合度。保持各个模块的独立性才能在将来扩展的时候能够比较优雅的实现。在设计NET和DAO这两个模块的功能的时候,本着单一职责原则(重复好几次了,希望大家也能够记住,这个原则对代码的可复用性非常重要),不要让一个类承担过多的指责,将粒度划分的足够小我们才能很好的复用这些已有的功能。

欢迎加入【iOS/Swift/OC开发交流群|127183325】交流学习

时间: 2024-08-01 06:08:24

项目总结--Version 1.0(三)的相关文章

eclise配置tomcat出现服务Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4 and Java EE 5 Web modules

当部署项目Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, 1.5 and Java EE 5 Web modules错;解决方案,如下面: 空间项目下的.settings以下,有个名为org.eclipse.wst.common.project.facet.core.xml的文件.里面配置有各种版本号信息: <?xml version="1.0" encoding="UTF-8"?> <fa

加载web项目时报的错误:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4

用eclipse开发的servlet项目不能加载到tomcat7.0服务器,原因是:servlet的版本高了 <installed facet="jst.web" version="3.1"/> 只要将version="3.0"改成version="2.5",然后重启eclipse即可!!! 具体操作步骤: 找到你的eclipse:D:\eclipse\workspace-jee\项目名称\.settings\or

服务器部署项目出现问题:Unsupported major.minor version 52.0

问题描述: 编写一个web 前置服务,使用ant编译项目,将项目部署到服务器上,启动时报此错误:Unsupported major.minor version 52.0 网上给出错误原因是服务器安装的java版本低于项目开发编译使用的java版本. 但是选择与服务器同样版本或者低于服务器版本编译项目,依旧出现此问题.经分析 ant 是使用javac 进行项目编译,没有明确配置使用哪个javac 进行编译, 默认使用环境变量设置的java 版本进行编译. 解决办法: 在build.xml 中配置j

eclipse部署项目时:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

布署项目的时候出现Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4,and Java EE 5 Web modules错误;解决方法如下: 在工作空间项目下的.settings下面,有个名为org.eclipse.wst.common.project.facet.core.xml的文件,里面配置有各种版本信息: <?xml version="1.0" encoding="UTF-8"?> <fa

加载web项目时报的错误:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modul

用eclipse开发的java项目不能加载到tomcat6.0服务器,原因是:jst.web的版本高了 <installed facet="jst.web" version="3.0"/> 只要将version="3.0"改成version="2.5",然后重启eclipse即可!!! 注意:  <installed facet="java" version="1.6"

vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法

原先本地项目版本(4.0.0.1)高于服务器版本(4.0.0.0),本地项目改成服务器版本4.0.0.0时,发布后的项目报这个错误 出现的问题:原先项目编译后可运行,发布在IIS后就报这个错误 分析问题: 1)mvc运行环境问题(首先本地项目版本跟服务器所用的版本不一致,所以先确定环境一致) 注:项目是使用mvc4框架的,所以确定asp.net.mvc版本跟服务器版本是否一样, 原先mvc4的环境版本是4.040804.0,先卸载后安装4.0.20714.0版本 2)引用dll包的版本问题(比如

【边做项目边学Android】小白会遇到的问题--This Android SDK requires Android Developer Toolkit version 23.0.0 or above

问题描写叙述: 上一篇讲到解决Appcompat_V7问题要减少adt版本号,于是就换旧版本号22.3.0啊,又一次打开Eclipse.立刻弹出: This Android SDK requires Android Developer Toolkit version 23.0.0 or above.  Current version is 12.0.0.v201106281929-138431. 一般这样的原因是误更新了SDK,导致SDK版本号过高,ECLIPSE提示须要更新ADT. 于是我认为

Unsupported major.minor version 51.0 错误解决方案

Unsupported major.minor version 51.0 错误解决方案 栏目:Eclipse大师 作者:admin 日期:2015-04-08 评论:0 点击: 13,299 次 jdk1.6工程中使用外部jar包中类出现:Unsupported major.minor version 51.0原因分析:出现上述错误是因为:外部jar包使用jdk1.7(jdk7)编译,而使用此jar包的工程jdk版本为jdk1.6(jdk6),算是版本不支持. 解决方法见下面的步骤: 第一步:在

未能加载文件或程序集“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件

ASP.NET 运行时错误:针对类型System.Web.Mvc.PreApplicationStartCode的应用程序邓启动初始化方法Start 引发了异常,显示下列错误消息: 未能加载文件或程序集"System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"或它的某一个依赖项.系统找不到指定的文件 aspx项目,加cshtml 后删 除cshtml 少这三