架构与设计模式

一.架构

何为架构?

  • 软件开发中的设计方案;
  • 类与类之间的关系、模块与模块之间的关系、客户端与服务端的关系

1.MVC

架构与设计模式_第1张图片
MVC.png
  • 优点:View、Model可以重复利用,可以独立使用
  • 缺点:Controller的代码过于臃肿

2.MVC-变种

架构与设计模式_第2张图片
MVC变种.png
  • 优点:对Controller进行瘦身,将View内部的细节封装起来了,外界不知道View内部的具体实现
  • 缺点:View依赖于Model

3.MVP

架构与设计模式_第3张图片
MVP.png

4.MVVM

架构与设计模式_第4张图片
MVVM.png

5.三层架构

架构与设计模式_第5张图片
三层架构.png

6.四层架构

架构与设计模式_第6张图片
四层架构.png

二.设计模式

什么是设计模式(Design Pattern)(其实就是类之间的一种关系,或者某个方法的设计思路)

是一套被反复使用、代码设计经验的总结
使用设计模式的好处是:可重用代码、让代码更容易被他人理解、保证代码可靠性
一般与编程语言无关,是一套比较成熟的编程思想

设计模式可以分为三大类

  • 创建型模式:对象实例化的模式,用于解耦对象的实例化过程
    单例模式、工厂方法模式,等等

  • 结构型模式:把类或对象结合在一起形成一个更大的结构
    代理模式(类似NSProxy)、适配器模式、组合模式、装饰模式,等等

  • 行为型模式:类或对象之间如何交互,及划分责任和算法
    观察者模式(KVO就是观察者模式)、命令模式、责任链模式,等等

单例模式、观察者模式(KVO就是观察者模式)是iOS中常用的模式。

三.面试题

  • 讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?

  • 你自己用过哪些设计模式?

  • 一般开始做一个项目,你的架构是如何思考的?

首先考虑用三层架构还是四层架构。假如项目有用到数据库、大量从本地读取数据,我会采取四层结构。否则就是三层结构。

一般我使用mvc多一些。当然,如果某一个界面的view在很多地方用到,但是他的model不是同一个的话,就使用mvp,这样就可以让view复用。

你可能感兴趣的:(架构与设计模式)