专栏首页wfaceboss编程思想与生活经验

编程思想与生活经验

1,内聚

程序=数据+操作

       =数据结构+算法(PASCAL之父Nicklaus Wirth)

       =对象+消息

对象是什么?

对象就是保管好自己的东西,做好自己的事情的程序模块--------这就是内聚

2,依赖

一个对象往往需要跟其他对象打交道,既包括获取依赖于另一对象,也包括仰赖其他对象的行为,一旦发生便称为该对象依赖另一对象。只要有一个依赖另一个的现象发生,则这两者之间存在耦合,比如妈妈和婴儿。

3,耦合

耦合的程度就是耦合度,也就是双方依赖的程度,妈妈和婴儿之间是强耦合,而我们与快递小哥之间为弱耦合。

4,依赖倒置

高层模块不应该依赖底层模块,都依赖与抽象。抽象不应该依赖于细节,细节应该依赖抽象。

举一个例子:

假设你要买一个IPhone,卖IPhone的老板让你拿一头猪跟他换,可是你并没有养猪,你只会编程。所以你找到一位养猪户,说给他做一个养猪的APP来换他一头猪,他说换猪可以,但是得用一条金项链来换——所以这里就出现了一连串的对象依赖,从而造成了严重的耦合灾难。解决这个问题的最好的办法就是,买卖双发都依赖于抽象——也就是货币——来进行交换,这样一来耦合度就大为降低了。

5,控制反转

首先我们要区分两个角色,server 跟 Client,也就是服务方和客户方。提供服务端的一方称为服务方,请求服务的一方称为客户方。

当我们使用开发框架时,开发框架就是作为服务方,而我们自己编写的业务应用就是客户方。当Client调用server时,这个叫做一般的控制;而当server调用Client时,就是我们所说的控制反转,同时我们也将这个调用称为“回调”。控制反转跟依赖倒置都是一种编程思想,依赖倒置着眼于调用的形式,而控制反转则着眼于程序流程的控制权。一般来说,程序的控制权属于server,而一旦控制权交到Client,就叫控制反转。比如你去下馆子,你是Client餐馆是server。你点菜,餐馆负责做菜,程序流程的控制权属于server;而如果你去自助餐厅,程序流程的控制权就转到Client了,也就是控制反转。

总结出开发框架与类库的区别:使用开发框架时,框架掌握程序流程的控制权,而使用类库时,则是应用程序掌握程序流程的控制权。或者说,使用框架时,程序的主循环位于框架中,而使用类库时,程序的主循环位于应用程序之中。框架会回调应用程序,而类库则不会回调应用程序。

6,依赖注入

A对象依赖于B对象,等价于A对象内部存在对B对象的“调用”,而前提是A对象内部拿到了B对象的引用。B对象的引用的来源无非有以下几种:A对象内部创建(无论是作为字段还是作为临时变量)、构造器注入、属性注入、方法注入。后面三种方式统称为“依赖注入”。

作者:在好 链接:编程思想里面,何谓解耦? - 在好的回答 来源:知乎

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaScript享元模式

    通过两个例子的对比来凸显享元模式的特点:享元模式是一个为了提高性能(空间复杂度)的设计模式,享元模式可以避免大量非常相似类的开销。

    wfaceboss
  • 5.4删除二叉搜索树的任意元素

    节点删除之后,将左孩子所在的二叉树取代其位置;连在原来节点父亲元素右节点的位置,比如在图中需要删除58这个节点。

    wfaceboss
  • JavaScript装饰者模式

    首先,我们先引入一个接口文件----目的为检验实现类是否完全实现接口中的方法,代码如下,

    wfaceboss
  • 【数据】即使不会爬虫技术,也能轻松获取的重要数据

    小编邀请您,先思考: 1 对于具体的业务问题,如何做好数据准备? 很多做数据分析的同学,对数据的获取有一个误区,觉得在互联网上获取数据,必须通过爬虫进行爬取。殊...

    陆勤_数据人网
  • 全站启用SSL之后,如何兼容不支持https抓取的搜索引擎?

    还是在今年 5 月份,百度就跳出来,宣布成为国内首个支持 https 的搜索引擎,结果呢?呵呵... ? 一、案例 ①、抓取诊断 全站开启并强制 https 之...

    张戈
  • Clojure 学习入门(1)—— 学习资料

    Clojure(发音类似"closure",['kləʊʒə(r)])是一套现代的Lisp语言的动态语言版,它是一个函数式多用途的语言,其语法和其他的Lisp一...

    阳光岛主
  • BAT人工智能人才报告:阿里薪资最高,百度成黄埔军校

    到底有多火?最好的答案就是数据。为此,量子位近日联合大数据人才招聘智能管理云平台e成科技,对国内人工智能领域的人才争夺情况进行了梳理。并把研究对象锁定在百度、阿...

    华章科技
  • 独家 | BAT人工智能人才报告:阿里薪资最高,百度成黄埔军校

    量子位 出品 | 公众号 QbitAI վ’ᴗ’ ի 追踪AI行业和技术动态 ? 人才争夺,是人工智能领域最火的主题。 到底有多火?最好的答案就是数据。为此,...

    量子位
  • 一个认知控制的人类前额-丘脑下回路

    来自爱荷华大学的RyanKelley等人在Brain期刊发文,发现人类丘脑底核以单突触的方式连接前额叶等认知脑区。丘脑底核(STN)是人类认知运动功能的一个关键...

    用户1279583
  • 合并OpenTracing和OpenCensus的趋同路线图

    作者:Ted Young、Pritam Shah和“技术规范委员会”(Carlos Alberto、Bogdan Drutu、Sergey Kanzhelev和...

    CNCF

扫码关注云+社区

领取腾讯云代金券