低耦合高内聚 - 不要把所有东西都放在 vuex中
我就举一个例子。比如,我想看电视,是否需要遥控器??请认真思考这个问题。
看似电视与“我”已经解耦了。然而,我需要通过遥控器去看电视,我的目的是看电视,但是我却需要依赖遥控器这个中间件。这就变相地将“我”与电视的依赖关系,变成了我与遥控器的依赖关系。虽然“我”与电视解耦了,但是“我”与遥控器却紧密联系在一起。
那么回到最初的问题,我的目的是看电视。我是否一定需要与电视解耦呢?答案是不一定!以此为基础,你可能会发明一个人可以直接控制电视的技术。
那么回顾历史。在智能手机终端发明之前,有一个阶段,人们使用触摸笔去控制手机。这是一个什么概念呢?“我”与手机之间的依赖变成“我”与“触摸笔“之间的依赖。看似我与手机解耦了,但是”我“与”触摸笔“之间却高度耦合在一起。同样,回到最初的目的,我是否需要与手机解耦呢?或者说我是否需要一个触摸笔呢?历史已经给出了答案,那就是多点触控。
在vue 项目中,我发现有些人频繁使用 vuex这个状态管理中间件。确实,它将事件与数据之间互相解耦,使得业务逻辑变得清晰。但是某些情况下,如果一味地依赖 vuex,实际上会让事情变得非常糟糕。就好像我想要打开电灯,但是我却要打开(依赖)一系列的开关,明明一个响指就能解决的问题(如果装了声控的话)。
低耦合高内聚 - 不要把所有东西都放在 vuex中的更多相关文章
- C# 低耦合 高内聚
低耦合 loosely Coupling 松散的耦合关系=炮友 couple=夫妻 夫妻=法律约束.家庭.生活.财产.繁衍 炮友:吃喝玩乐,不会产生感情方面的依赖 内聚性 内聚性又称块内联 ...
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- 面系那个对象开发原则.高内聚.低耦合+Python安装详细教程+print输出带颜色的方法
面系那个对象开发原则.高内聚.低耦合 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计, ...
- 如何理解低耦合AND高内聚?[转]
1.高内聚 首先我们来看看内聚的含义:软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度高.在软件中内聚程度的高低,标识着软件设计的好坏. 我们在进 ...
- Java编码思想之什么是高内聚低耦合?
分别描述的是模块内部特征,和模块外部引用关系. 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高. 内聚是就其中任何一个模块的内部特征而言的. 耦合是就多 ...
- Office之什么是高内聚低耦合
---恢复内容开始--- 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低. 粗劣的说就指的是:单独模块间有着强大的凝聚力,不同的模 ...
- 模块内高内聚?模块间低耦合?MVC+EF演示给你看!
前言 在软件项目开发过程中,我们总能听见“高内聚,低耦合”,即使这种思想在我们学习编程的过程中就已经耳濡目染.可一旦当我们上项目,赶进度的时候我们就会“偷懒”,能省时间就省.管他什么设计模式,什么软件 ...
- Java学习之浅析高内聚低耦合
•前言 如果你涉及软件开发,可能会经常听到 "高内聚,低耦合" 这种概念型词语. 可是,何为 "高内聚,低耦合" 呢? •概念 "高内聚,低耦合&qu ...
- 如何设计一个高内聚低耦合的模块——MegEngine 中自定义 Op 系统的实践经验
作者:褚超群 | 旷视科技 MegEngine 架构师 背景介绍 在算法研究的过程中,算法同学们可能经常会尝试定义各种新的神经网络层(neural network layer),比如 Layer No ...
随机推荐
- awesomes前端资源库网站
https://www.awesomes.cn http://www.cnblogs.com/jiujiaoyangkang/p/4998518.html (web app自适应框架flexible) ...
- !HDU 1574 RP-dp-(重点在状态确定)
题意:有n件事.每件事若发生有两种情况.添加RP为a,可是收益会降低c:降低R为a,收益会添加c. 每件事可以发生的前提是小于等于或者大于等于门限值b.求最大收益. 分析:这题我没找到状态,所以就不会 ...
- javascript验证QQ号、邮箱和手机号码
//验证QQ号码5-11位 function isQQ(qq) { var filter = /^\s*[.0-9]{5,11}\s*$/; if (!filter.test(qq)) { retur ...
- CSS中的偏僻知识点
一.css中的calc 在CSS中有calc属性用于尺寸的计算,可以让百分比和像素值进行运算. div {width : calc(100% - 30px);} 为了兼容性 /*Firefox*/ - ...
- Mac Apache Tomcat WebServer 服务器配置
1.配置准备工作 1)配置服务器准备工作 在 Finder 中创建一个 "workspace" 的文件夹,可直接创建在 /Users/QianChia(当前用户名)目录下. 下载相 ...
- +: indexed part-select
That syntax is called an indexed part-select. The first term is the bit offset and the second term i ...
- 详解CUDA编程
CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构.” 编者注: ...
- js判断登陆用户名及密码是否为空的简单实例
js判断登陆用户名及密码是否为空的简单实例 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script type="text/javascript ...
- TP支持菜单动态生成RBAC权限系统数据库结构设计方案
最简单基于RBAC权限系统数据库结构设计 包括如下几个表 1. 用户表 -- Table "t_user" DDL CREATE TABLE `t_user` ( `id` int ...
- 块级格式化上下文( Block formatting contexts)
那么如何触发BFC呢? float 除了none以外的值 overflow 除了visible 以外的值(hidden,auto,scroll ) display (table-cell,table- ...