Kenny 肉桂的主页

记录自己的进步


  • 首页

  • 归档

  • 标签

  • 搜索
close

iOS平台(移动平台)架构问题

发表于 2014-11-10   |   分类于 重构、模式、架构   |  

尴尬的遭遇

自己从内心觉得对项目分层是一种非常好的思想,于是便在网络中寻找有关iOS项目分层的资料. 无奈,网络中关于iOS的项目架构资料非常少(最后证明我大方向走错了了,架构应该是独立于平台的,所以”iOS”的架构资料是找不到的),就算有几篇博文,也是自己琢磨出来的野路子.(个人思想比较保守,不够权威的东西不能让我信服,而事实上,每个人都能看到那些博文是有过度设计的问题的)

后来尝试在 code4app群里讨论这个问题,结果群里几个发言活跃的群友对这个架构问题”免讨论”

然后在 “跟MJ完虐iOS3.0”这个群中,更是遭到了红果果的嘲笑:MVC就够了,还分什么层?

并无刻意谈论群友,只是想拿事实举例:现在相当一部分开发者,对架构和分层这个东西认知不足.然后, 自己深知分层的好处,虽然有些灰心,但不至于放弃.最终,发现了Martin Fowler写的 <<企业应用架构模式>>一书,顿觉豁然开朗.

对于移动设备来说,分层是否有必要?

我最早是做java的,接触到的项目比较大,会有架构设计. 那么转到移动,就会考虑,移动是否也真的需要架构设计

只要是软件,就会有需求的变更,那么分层就显得非常有必要了. 即,我们需要为自己的软件留一条”后路”,解耦合,让其可扩展.
低耦合企业级系统架构涉及及移动平台的分层架构设计

从大方面来讲,架构是必要的,关键是怎么去执行.

一个系统,采用什么样子的结构,有哪些组件,组件之间什么关系,和环境之间有什么关系,这都是设计架构(或者分层)需要考虑的问题.

目的都是为了建立低耦合的企业级应用系统,低耦合的系统的好处是细化开发较色,提高开发效率,提高扩展性

需求是经常变化的,导致了系统不能满足需求变化的需求,因为是强耦合的,模块与模块之间,类和类之间.

低耦合的好处太多了

  • 可扩展性强
  • 效率高
  • 适应用户需求的变化

这样我们系统维护工作就少,就是比较灵活
什么是企业级系统

这个问题在我的架构的基本概念和演化-博客园(或者csdn的架构的概念和最基本的三层架构-iOS企业应用架构设计 )一文中讨论过,但是这里还是有必要再提一下:

系统比较庞大,涉及到前端,后台(数据库,中间件,实际的设备)

现在的 java .net 都是可以构建企业级系统的.
设计的注意点

设计一定要考虑的非常周到,这样就存在一个文件,需要降低耦合度.分层,每层里面合理的运用设计模式 这就是:架构设计和设计模式

每层之间的东西必须是具有类似功能的类和子系统的集合.

可以分四层,五层,甚至一层,二层. 每种分法必须要有自己的道理.

比如你的房子,要开个窗户,结果就塌了,就这说明是不合理的设计

此文中很多想法和灵感源自关东升老师的一节视频,视频在 51cto可以搜索到,但是付费的,本人只是学习了免费的第一节的内容,便觉得受益匪浅,更是在尝试寻求老师分层不合理性的时候,发现了Martin的<<企业应用架构设计>>一书,开始了更远的探究.在此感谢老师. —-我

架构的概念和最基本的三层架构

发表于 2014-11-06   |   分类于 重构、模式、架构   |  

架构

Martin Fowler 给”架构”这个词做了两点归纳:

  1. 最高层次的系统分解
  2. 系统中不易改变的决定

它包括了一些开发者希望能够及早做出的决定,因为这些决定看起来是难以改变的. 如果发现一些决定并不像你想象的那么难以改变,那么他就不再与架构相关.这么下去,架构自然就浓缩成了一些重要的东西.

在架构模式中,层次是最为重要的,Martin Fowler的<<企业应用架构模式>>全书都在阐释怎么将企业应用组织成不同的层次,还有这些层次如何协同工作.
架构和模式

阅读全文 »

解决TableView重用机制带来的数据混乱问题

发表于 2014-04-14   |   分类于 iOS Tips   |  

问题描述

在开发一个项目中,本地用 TableView 进行服务器的数据展示.但是最后发现,数据每隔几条就重复.通过
charles 抓取服务器端返回的数据.没有任何问题.也就是说是本地的处理方式出了问题.

问题定位

本地的 UI 逻辑比较简单.所以可以很轻松的断定是 UITableView 的重用机制导致了这个问题.以下是核心代码:

阅读全文 »
1…1213
桂庆

桂庆

Kenny 肉桂的主页 记录自己的进步

75 日志
17 分类
23 标签
RSS
微博
© 2013 - 2017 桂庆
由 Hexo 强力驱动
主题 - NexT.Mist