编程思想与生活经验

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对象内部创建(无论是作为字段还是作为临时变量)、构造器注入、属性注入、方法注入。后面三种方式统称为“依赖注入”。

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

 

posted @ 2017-10-16 23:26  WFaceBoss  阅读(1136)  评论(8编辑  收藏  举报