关于ICO的一些理解
第一次看到ICO,估计很多人都处于懵逼的状态,感觉很抽象。 提到IOC可能想到的下一个词语就是DI
IOC:控制反转
DI:依赖注入
那么什么是控制反转呢?
我以前对这个概念也很模糊,最近在知乎上看到一个帖子https://www.zhihu.com/question/23277575,解释通俗易,有兴趣可以看看。
我觉得可以这么解释,其实淘宝就是一个依赖注入的例子,有三个角色:顾客、淘宝(第三方平台)、商户。我们需要买产品,商户需要卖产品,我们不需要去找商户,同样商户也不用来找用户,我们不需要直接交易。对于我们来说,只需要关注自己要买什么,然后去淘宝找需要的产品,然后下单就可以了。顾客和商户互相不依赖,只有在进行交易的时候,才会产生联系。淘宝在这里的角色就是一个第三方,顾客和商户中间的一些交集是淘宝在做。
什么是依赖注入?
目前我在开发中用到的是:比如我们定义了一个接口,我们需要实现这个接口,实现完了之后我们需要告诉程序,他们俩中间的绑定关系,这时候进行的操作就是注入了。
IOC和DI的关系?
IOC和DI是两个核心概念,控制反转是目的,依赖注入是实现控制反转的手段。不要混为一谈,他们不一样,可能有些人会有一些误解,觉得他们是一个东西(以前我就是这么认为的)。
以上均为个人理解,不喜勿喷,有问题可以指出,欢迎指导。
关于ICO的一些理解的更多相关文章
- Ico初步理解
Ico定义:是一个重要的面向对象编程的法则来削减计算机程序的耦合问题(解耦).通俗理解:把运行中程式的控制权从程式本身那里拿过来,放到配置文件中,通过"反射"找到匹配配置文件总的对 ...
- 关于favicon.ico,shortcut icon,icon
引入一篇文章.关于favicon.ico二三事. http://www.cnblogs.com/LoveJenny/archive/2012/05/22/2512683.html 一直对favicon ...
- webpack入门和实战(二):全面理解和运用loader和plugins
您的阅读目录: 一.理解webpack加载器loader 二.理解less-loader加载器的使用 三.理解babel-loader加载器的使用 四.webpack命令行常见使用的操作 五.用web ...
- 图解 CSS: 理解样式表的逻辑(转载)
原文:http://www.cnblogs.com/del/archive/2009/02/01/1382141.html 样式表可以是外部的.内联的或嵌入的; 链接外部样式文件一般是:<lin ...
- 深入理解css中vertical-align属性
一.为什么要写这篇文章 今天看到一个问题: 两个div 都设置 display:inline-block,正常显示:但是在第二个div中加一个块级元素或者内联元素,显示就变了个样,为什么? <m ...
- 看得懂的区块链,看不清的ICO人心
比特币又开始下跌了,是狂欢尽头还是又一波调整,无从得知,背后的乱象会让监管者继续心烦,而这乱象对我来说,有时候会有些心寒. 你说我怎么可能想到,我一个写程序的人,突然有一天会发现,朋友圈里有一些搞技术 ...
- 如何通过以太坊智能合约来进行众筹(ICO)
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...
- Less与TypeScript的简单理解与应用,并使用WebPack打包静态页面
既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 创建空项目 使用Less 使用TypeScript 使用WebPack 开始写项目 总 ...
- 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI
本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...
随机推荐
- 使用lightProbe来模拟动态物体的照明shader
VertexLit path中读取lightProbe烘焙信息: Shader "VertexLitProbe" { Properties { _MainTex ("Ba ...
- 操作argc, argv的经典写法
[问题] 我在看boost源代码的时候看到如下的代码, template<class charT> basic_command_line_parser<charT>:: bas ...
- Spring AOP获取拦截方法的参数名称跟参数值
注意:这种方式需要JDK1.8版本支持 开始:http://www.cnblogs.com/wing7319/p/9592184.html 1.aop配置: <aop:aspectj-autop ...
- Android性能优化-减小图片下载大小
原文链接 https://developer.android.com/topic/performance/network-xfer.html 内容概要 理解图片的格式 PNG JPG WebP 如何选 ...
- WPF如何为程序添加splashScreen(初始屏幕)
一.考虑到大部分的splashscreen其实都只是一个图片,所以最简单的做法是,先导入一张图片,然后设置它的生成操作为“splash screen” 二.通过程序设置SplashScreen pub ...
- Python机器学习(1):KMeans聚类
Python进行KMeans聚类是比较简单的,首先需要import numpy,从sklearn.cluster中import KMeans模块: import numpy as np from sk ...
- tmux 共享窗口大小
http://www.cnblogs.com/bamanzi/p/tmux-share-windows-between-sessions.html
- Zabbix agent 在windows上安装部署
Zabbix agent 在windows上安装部署 1.下载与解压 地址: http://www.zabbix.com/downloads/2.4.4/zabbix_agents_2.4.4.win ...
- 基于vue-cli项目添加服务端渲染
两个示例的git地址: 1. 我的环境 2. 方式一:使用prerender-spa-plugin插件获得SSR的效果. 2.1 说明 2.2 初始化 1 vue init webpack vue-p ...
- 【Spark 深入学习 07】RDD编程之旅基础篇03-键值对RDD
--------------------- 本节内容: · 键值对RDD出现背景 · 键值对RDD转化操作实例 · 键值对RDD行动操作实例 · 键值对RDD数据分区 · 参考资料 --------- ...