架构、框架和设计模式

2022-08-18  本文已影响0人  斐硕人

问题

今天和实验室小伙伴说到了设计模式。

我:你们指的是 MVC、MVVM 还是?
小伙伴:这你都不知道,单例、工厂啊。
我:真不知道,不会的知识又多了一点

概念

23 种设计模式

创建型 结构型 行为型
1 工厂方法(Factory Method) 6 组合(Composite)模式 13 责任链(Chain of Responsibility)
2 抽象工厂(Abstract Factory) 7 装饰(Decorator) 14 命令(Command)
3 原型(Prototype) 8 外观(Facade) 15 解释器(Interpreter)
4 单例(Singleton) 9 代理(Proxy) 16 迭代器(Iterator)
5 建造(Builder) 10 享元(Flyweight) 17 备忘录(Memento)
11 桥(Bridge) 18 中介者(Mediator)
12 适配器 (Adapter) 19 观察者(Observer)
20 访问者(Visitor)
21 状态(State)
22 策略(Strategy)
23 模版方法(Template Method)

什么是 MVVM?比之 MVC 有什么区别?什么又是 MVP ?

MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化我们的开发效率。

比如使用单页应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,当时一旦项目变得复杂,那么整个文件就会变得冗长,混乱,这样对我们的项目开发和后期的项目维护是非常不利的。

MVC

MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。其中 View 负责页面的显示逻辑,Model 负责存储页面的业务数据,以及对相应数据的操作。并且 View 和 Model 应用了观察者模式,当 Model 层发生改变的时候它会通知有关 View 层更新页面。Controller 层是 View 层和 Model 层的纽带,它主要负责用户与应用的响应操作,当用户与页面产生交互的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改,然后 Model 层再去通知 View 层更新。

MVP

MVP 模式与 MVC 唯一不同的在于 Presenter 和 Controller。
在 MVC 模式中我们使用观察者模式,来实现当 Model 层数据发生变化的时候,通知 View 层的更新。这样 View 层和 Model 层耦合在一起,当项目逻辑变得复杂的时候,可能会造成代码的混乱,并且可能会对代码的复用性造成一些问题。MVP 的模式通过使用 Presenter 来实现对 View 层和 Model 层的解耦。
MVC 中的 Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新,MVP 模式中,View 层的接口暴露给了 Presenter 因此我们可以在 Presenter 中将 Model 的变化和 View 的变化绑定在一起,以此来实现 View 和 Model 的同步更新。这样就实现了对 View 和 Model 的解耦,Presenter 还包含了其他的响应逻辑。

MVVM

MVVM 模式中的 VM,指的是 ViewModel,它和 MVP 的思想其实是相同的,不过它通过双向的数据绑定,将 View 和 Model 的同步更新给自动化了。当 Model 发生变化的时候,ViewModel 就会自动更新;ViewModel 变化了,View 也会更新。这样就将 Presenter 中的工作给自动化了。比如 vue 是通过使用数据劫持和发布订阅者模式来实现双向数据绑定的原理。

观察者模式和发布订阅模式有什么不同?

发布订阅模式其实属于广义上的观察者模式。
在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接收事件并作出响应。
而在发布订阅模式中,发布者和订阅者之间多了一个调度中心。调度中心一方面从发布者接收事件,另一方面向订阅者发布事件,订阅者需要在调度中心中订阅事件。通过调度中心实现了发布者和订阅者关系的解耦。使用发布订阅者模式更利于我们代码的可维护性。

争议点

MVC到底是设计模式还是一种框架?,有人认为单例模式等设计模式应该称为设计技巧

。。。。待更新


相关文章

  1. 架构、框架、设计模式的区别
  2. 简单理解架构模式和设计模式的区别
  3. 架构、框架和设计模式关系
  4. iOS---设计模式、架构模式、框架的理解
上一篇 下一篇

猜你喜欢

热点阅读