移动App设计之分层架构+MVC
http://www.cnblogs.com/Logen/archive/2012/11/08/2760638.html
场景分析:我们知道,一个移动设备的应用大多与网络有关,也就是说,我在移动设备上看到的数据,一般都是从Server上”拉“过来,显示在我们的移动设备(ios androiud、wpohone等)上。那我们就这个”拉“的过程分析,拉什么样的数据?去哪里拉?拉过来的数据怎么处理?用编程(开发)的思维看,就是定义什么实体(业务实体)、发送请求、解析数据。当然这也只是大体的过程。但从软件架构设计上讲,定义实体、发送请求、解析数据都是具有单独意义的模块。那我们怎么处理这些模块呢?
场景应用:sina weibo。定义timeline、user等实体;请求最新的微薄等;处理(主要是解析)请求的数据;最后是显示在移动设备的UI上。
回到前面的问题,我们该如何处理这个具有单独意义的模块呢?让我们借鉴下web的设计:
在传统的web系统设计中,数据库的访问、业务逻辑和UI设计混淆在一起,这样虽然直观,但一旦需求有所改动,对日后的维护带来很多不便。为了解决这个问题,人们提出了分层的架构思想。
分层架构模式:
"将解决方案的组件分隔到不同的层中,每一层中的组件应保持内聚性,各层保持松散耦合。" 分层模式是最常见的一种架构模式。在web应用系统开发中,比较流行三层架构(表现层、业务逻辑层、数据访问层),当然我们细分,也可以分层多层(我记得那时候我分七层)。
现时隔多年,如今反观移动App架构设计(对大程序而言,有人说移动设备很难开发大的系统,我不是完全赞同此说法),分层架构的设计仍然少不了。远的不说,就说IOS App的开发,苹果的设计是基于MVC的设计模式。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
我们细看下,其实他也是分层(三层)架构的。也就是说,它的设计思想也是分层。
既然MVC也是分层,那何不把App整体设计成分层架构,MVC保持原来的设计不变。将一些具有单独意义解决问题的模块分层,让他们服务于MVC呢?
那我可以分享(只是分享)一下我一个App的架构。如下:

移动App设计之分层架构+MVC的更多相关文章
- DDD「领域驱动设计」分层架构初探
前言 基于 DDD 传统分层架构实现. 项目 github地址:https://github.com/WuMortal/DDDSample 这个分层架构是工作中项目正在使用的分层架构,使用了一段时间发 ...
- 前后端分层架构MVC&MVVM
早期 特点 页面由 JSP.PHP 等工程师在服务端生成 JSP 里揉杂大量业务代码 浏览器负责展现,服务端给什么就展现什么,展现的控制在 Web Server 层 优点 简单明快,本地起一个 Tom ...
- 基于.NET平台的分层架构实战(六)——依赖注入机制及IoC的设计与实现[转]
原文:http://www.cnblogs.com/leoo2sk/archive/2008/06/19/1225223.html 我们设计的分层架构,层与层之间应该是松散耦合的.因为是单向单一调用, ...
- 【blade的UI设计】理解前端MVC与分层思想
前言 最近校招要来了,很多大三的同学一定按捺不住心中的焦躁,其中有期待也有彷徨,或许更多的是些许担忧,最近在开始疯狂的复习了吧 这里小钗有几点建议给各位: ① 不要看得太重,关心则乱,太紧张反而表现不 ...
- .NET应用架构设计—重新认识分层架构(现代企业级应用分层架构核心设计要素)
阅读目录: 1.背景介绍 2.简要回顾下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴露 ...
- 从Microsoft.AspNet.Identity看微软推荐的一种MVC的分层架构
Microsoft.AspNet.Identity简介 Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的mem ...
- .NET应用架构设计—再次了解分层架构(现代企业应用分层架构核心设计元素)
阅读文件夹: 1.背景介绍 2.简要回想下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴 ...
- 一个电商项目的Web服务化改造5:面向服务的分层架构设计(有图有真相)
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA. 有点挑战,做完了,会有很大进步. 本篇,以我亲自画的3个图,阐述一下架构设计. 一.分层架构-总体图 ...
- APP和服务端-架构设计(一)
架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构也会不同.然而,有些东西还是通用的,是所有架构师都需要考虑的,也是所有项目都会有的需求,比如API如何设计 ...
随机推荐
- Find发帖水王哥
Find发帖水王 传说贴吧有一大“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子总数的一半.如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的 ...
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...
- Java实现直接插入查找
import java.util.Scanner; /*算法思想:每趟将一个待排序的元素作为关键字,按照关键字值大小插入到已排好序的那部分序列的适当位置上,直到插入完成,*/ /*平均时间复杂度O(n ...
- 指针做MAP的KEY的TEST
用struct做map的key会需要"operator <"等等,还会出现奇怪的问题可能. 试了下用指针做key,看看效果: #include <iostream> ...
- IDEA下安装/配置Jrebel
IDEA下安装/配置Jrebel6.X 1. 为什么要使用Jrebel 在日常开发过程中, 一旦修改配置/在类中增加静态变量/增加方法/修改方法名等情况, tomcat不会自动加载, 需要重启tomc ...
- 开源 android
Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...
- JS2 for应用
for应用 再谈js获取元素一二: var oUl=document.getElementById('list'); //静态方法 var oUl=document.getElements ...
- C# Java DES加密解密
转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给 ...
- 使用LuaInterface遇到的编码问题
今天使用LuaInterface加载脚本时忽然报“未知字符”错误信息!于是检查文件编码 将其修改为“US ASCII” 就好了.
- Handler 原理分析和使用之HandlerThread
前面已经提到过Handler的原理以及Handler的三种用法.这里做一个非常简单的一个总结: Handler 是跨线程的Message处理.负责把Message推送到MessageQueue和处理. ...