软件构架:MVC设计模式

软件体系结构是关于做出基本的结构选择,一旦实施,更改成本很高。

每个软件开发项目都经历多个阶段:概念,设计,开发,测试等等。 作为一名初级开发人员,对我而言显而易见的是,在开始编写任何代码之前,至关重要的是,全面规划应用程序的体系结构基础,以确保您的应用程序从一开始就具有模块化,稳定和可扩展的特性。 架构设计有助于在项目中尽早发现潜在问题,以便有机会在施工开始之前进行更改。 有效的架构模式可提高代码的可读性,因为它们需要考虑直到以后才变得可见的问题。

什么是建筑设计模式?

设计模式是针对软件设计中常见问题的可重用解决方案。 它们是旨在帮助我们编写易于理解,易于测试和易于重用的代码的模板。 设计模式有助于创建松耦合的代码,以便以后可以在代码中轻松更改或替换其组件。

使用设计模式构建应用程序确实可以为您带来回报。 开发人员非常了解我们的应用程序会发生变化:您可能想添加新功能,可能需要修复一些错误,您的雇主可能会要求您在视图控制器上快速更改配色方案,或者您可能需要更新您的代码以与新版本的iOS软件或新设备保持兼容。 架构设计模式是使您的应用程序能够应对这些更改的准则。

现在我们已经回答了“ 为什么? 让我们来看看“ 如何?

iOS设计模式:

iOS开发最常见的设计模式是: MVCMPVMVVNViper 。 我将仅介绍MVC和MVVN,因为这些是我目前最感兴趣的设计模式。 在此博客中,我将重点关注MVC,接下来是关于MVVN的后续博客。

什么是MVC?

模型视图控制器(MVC)由Trygve Reenskaug于1979年发明。它是iOS开发中最常见的面向对象设计模式。 MVC可以非常清楚地分离应用程序的数据-逻辑,视图和控制器。 MVC根据对象的一般角色对它们进行分类,并鼓励根据每个角色对代码进行清晰的分离。 每个对象都属于以下组之一:

模型负责数据和逻辑:诸如持久性,模型对象,解析器和网络代码之类的内容都存放在这里。

视图负责负责模型的可视化表示的对象以及用户可以与之交互的控件; 想任何以“ UI”前缀开头的东西。

Controller充当应用程序的视图对象及其模型对象之间的中介。 控制器编排查看事件和模型更改。

现在,我们了解了MVC如何管理这三个阵营之间的通信,我们的工作是根据每个对象所扮演的角色来明确区分代码。 遵守MVC设计模式需要不断关注对象的位置,以避免潜在的陷阱。 以下是一些需要牢记的准则:

  • 控制器可以与之对话并了解有关该模型的所有信息。 控制器的工作是从模型中获取所需信息以显示给用户。
  • 控制器还可以通过我们在控制器中创建的插座直接与视图对话。
  • 视图只是控制器的奴才 -保持视图简单!
  • 模特模特 永远都不要说话。

MVC的缺点:

设计模式没有万灵药。 在MVC中,视图和控制器紧密耦合。 iOS视图控制器类通常将同时包含UI逻辑数据逻辑,这将使一个逻辑的修改影响另一个逻辑-创建MVC的一种“ M / VC”变体。

随着视图控制器类实现日益复杂的UI要求(例如网络和解析),同一逻辑控制器类中的数据逻辑代码量也趋于增长。 这通常会导致难以重构,测试和读取的大型笨拙的视图控制器类。 由于这些原因,MVC也被称为Massive View Controller。

结论:

坚实的架构设计模式将定义代码的整体质量。 它将确定代码的灵活性,清晰性和可靠性。 坚实的建筑模式将引导您从一开始就对您的对象提出正确的问题。

具有不稳定基础的建筑物最终总是倒塌!