最近在学习的过程中,学习了一些关于redux的一些知识,学之前用redux,虽然会用但是实现的原理就不是特别清楚,天天沉迷于搬砖

总是这木搬砖也不是个事啊,就准备开始深入了解一些原理性的东西

首先在看redux之前,我们要知道,redux和react没有关系,他想和谁玩就和谁玩,任何框架都行,redux本身就是一个状态管理器

好了,接下来在进入Redux之前,我们先来看一看一个模式,这个模式叫做观察者模式(又称发布订阅模式)

啥叫观察者模式,打个比方(注意,单身狗撤退,当心扎心),就是你家所有人都比较关心你,然后当你有了对象你告诉他们,老子有对象了,他们就会接收到这个信息,你有对象了

此处只描述肯定不行啊,有图才能有真相,好吧,今天让你们看看啥叫抽搐派大师

第一状态:啥都没发生

下面进入第二状态,你家亲人都关心你

第三状态:你有女朋友了,高声呼喊

第四状态,你的亲戚接收到你的信息

好了,发布订阅模式讲完了,

读者:!!!!你说什么呢,小老弟,你咋这木快,我都没感觉你就结束了?

又帅有聪明的我:咋说话呢,男人就不能说快,我一点都不快好吧,非常持久,不过上面的图真的就结束了发布订阅模式啊

读者:你TM的蒙我啊,找削啊

又帅又聪明的我:不是不是,这位大侠,你细听分说

  我们来解析一下上图,你===发布者,亲戚===订阅者 ,蓝色箭头==订阅

  亲戚关心你,即是亲戚通过某种方法订阅了你

   当你的状态发生改变时,就会触发亲戚订阅你的方法,从而告诉你的亲戚们,你有对象了(当然这只是个例子,你以为你会有对象?别天真了)

读者:我还不懂咋办

又帅又聪明的我:我把你凉拌了你信不信,实在不懂也别慌,我还有办法,把朕的代码端上来给这位少侠品鉴品鉴

这里就不发代码了,照着图片打吧,正好练习一下

运行结果:

可以吧,再去上面感受感受这个发布订阅模式吧

这篇先写到这里,明天继续

连个推荐评论都没有,惨啊

从发布订阅模式到redux(一)的更多相关文章

  1. react 中发布订阅模式使用

    react 中发布订阅模式使用 场景 怎么能将设计模式应用到我们的 React 项目中?以前一直在思考这个问题. 场景一 模块 A 模块 B 需要用到同一个数据 data,A 和 B 都会修改这份数据 ...

  2. 15天玩转redis —— 第九篇 发布/订阅模式

    本系列已经过半了,这一篇我们来看看redis好玩的发布订阅模式,其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果 ...

  3. 第五章 --- 关于Javascript 设计模式 之 发布-订阅模式

    先来个最简单的 发布订阅模式 document.body.addEventListener('click',function(){ alert(123); }); document.body.clic ...

  4. NetMQ(三): 发布订阅模式 Publisher-Subscriber

    ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...

  5. C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命

    使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠 ...

  6. 4.js模式-发布-订阅模式

    1. 发布-订阅模式 var observe = (function(){ var events = {}, listen, trigger, remmove; listen = function(k ...

  7. RabbitMQ/JAVA (发布/订阅模式)

    发布/订阅模式即生产者将消息发送给多个消费者. 下面介绍几个在发布/订阅模式中的关键概念-- 1. Exchanges (转发器) 可能原来我们都是基于一个队列发送和接收消息.现在介绍一下完整的消息传 ...

  8. Javascript中理解发布--订阅模式

    Javascript中理解发布--订阅模式 阅读目录 发布订阅模式介绍 如何实现发布--订阅模式? 发布---订阅模式的代码封装 如何取消订阅事件? 全局--发布订阅对象代码封装 理解模块间通信 回到 ...

  9. ActiveMQ发布订阅模式

    ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...

随机推荐

  1. 第56节:ArrayList,LinkedList和String

    import java.util.ArrayList; public class Demo{ public static void main(String[] args) throws Excepti ...

  2. Java面试集合(五)

    1. 继承 在Java中的三大特性中存在一种为继承,继承究竟是用来解决什么问题的呢?在我们写代码的时候,我们会在一些类中使用相同的属性和方法,如两个不同的人(类),共同都有年龄,身高,体重等. 那么我 ...

  3. [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换

    1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...

  4. Matplotlib 使用 - 《Python 数据科学手册》学习笔记

    一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...

  5. vue的Vuex

    网上也很多文章,但解释起来的确玄乎,小白们很难理解到位. 自问文笔没大神们好只是自己了解了掌握了Vuex用法以及主要思路 但要我解释起来也只能参考大神们的说法 Vuex就是一个全局变量,而这个全局变量 ...

  6. HBase数据持久化之HRegion.flushcache即CF持久化

    我们从HRegion.flushcache开始分析.由于这个过程还是比较复杂的,因此,在这一节,我们不会分析的太过详细,只是单单的介绍一下其大体流程,待大家有了整体的把握之后,我们将在下一节详细介绍其 ...

  7. python(leetcode)-283移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...

  8. Java的优点

    前几天面试被问到:“Java的优点有哪些?”,当时只回答了跨平台和解释型两点,做的并不是太好,所以今天小编就总结一下Java的几大优点,增加自己的知识储备. 1.跨平台性: Java通过自带的JVM实 ...

  9. pxe+http+kickstart实验原理

    1.说明 所谓的PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境. 要实现pxe,至少需要3个服务 2.流程 注意:全部用的udp封装 1)cl ...

  10. js_html_input中autocomplete="off"在chrom中失效的解决办法

    分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocomplete="new-password"(已实测,有效) 网上咱没有找到对其详细解释,但是发现16 ...