本发明是ios平台技术,涉及uikit和runoop和多线程技术。
背景技术:
近年来移动互联网的发展呈现出势不可挡的势头,在信息化时代,人们的生活节奏越来越快,时间对于任何人来说都是很重要的;当用户拿到一张菜单时,面对很多菜品信息,浏览所有的菜品信息非常耗时,且对菜品的选择也比较耗费精力;因此,餐饮业智能点餐系统是非常有必要的;当下移动终端的app开发正好非常契合餐饮业点餐的需求,它的便利、易操作等特性深受人们的喜爱。
技术实现要素:
系统实现关键技术:
1.多线程技术:由于终端需要与服务器交互,因此必然会涉及到异步请求数据,这部分会对整个系统的用户体验产生很大的影响,其中用到的多线程技术主要有:
(1)nsthread,这是比较轻量的线程技术,每个线程的生命周期都是自己管理的,使用起来可能有点麻烦;
(2)nsoperation,这是面向对象的一种线程管理技术,使用起来比较方便,可以很好地控制任务并发数量,并且可以添加人物之间的相互依赖关系;
(3)gcd,这一套多线程技术,底层全部是通过c函数实现的,可以比较高效地利用系统cpu资源;
2.runoop技术:runloop是与多线程相互配合的一种技术,runoop事实上可以被理解为eventcycle(事件循环),简单地说就是可以提高cpu的使用效率;比如进行网络资源的获取时,这时候cpu不用等待就可以去十其他的事情;
3.设计模式:由于整个系统的完成都是在面向对象的基础上,所以设计模式也是尤为关键的;各个模块之间需要进行数据的交互,为了减少各个模块的藕合度,需要合理地利用设计模式,如mvc、观察者模式、代理模式在系统中都用得非常多。
系统模块功能设计:系统分为两部分:一部分是ui展示及用户信息的收集,呈现在ipad端;另一部分是server端,负责对数据进行处理;
1.登录模块:登录模块主要有3个功能:常客(是指过去在餐厅有就餐记录的用户)登录验证、非常客登录、新用户注册;
2.分类模块:这部分会按照分类展示菜品,如按照主食、汤菜、酒水、肉菜、素菜、凉菜分类,目的就是在用户不接受系统提供的推荐菜品时,可以让用户快速地按照分类信息寻找自己需要的菜品;
3.菜品模块:这个模块比较简单,就是提供菜品相关的详细信息,如菜品的图片、介绍菜品的短视频、菜品的文字介绍,其他用户对菜品的详细评价信息;主要是帮助用户了解当前菜品的相关详细信息;
4.afnetworking模块:这个模块主要就是负责ipad客户端与服务器端的网络交互,使用的技术主要是nsurlconnection以及nsoperation技术,实现了多线程并发的功能,提高了客户端与服务器的交互效率;
5.cache模块:cache模块的功能主要是提供在客户端的缓存功能,主要目的就是为了提高存取数据的效率,最终目的是为了改善用户体验,使用的是lru算法,并且设计了二级缓存策略;
6.数据库模块:数据库是用于存储数据的仓库,使用的技术是mysql;
7.推荐模块:推荐模块分为两个部分,一个是ipad客户端的部分,另外一个部分是服务器端,ipad客户端用户展示推荐菜品的展示,也就是我们所能看见的部分。