7七月demand

1. 要自己理解
1. 不能照搬
1. 不能和Spring相同
1. 为什么

目的:
理解Java的OCP和IOC原理

作业要求:
课程从一个非常简单的案例逐步讲解Java为什么笨重缺又收到企业开发的青睐。但是纸上谈终觉浅,还是需要大家在听课的基础上更进一步的写写自己对于IOC的理解。
IOC在业务型的项目中看起来不仅仅不能简化代码,甚至是更繁琐,但在框架设计上是非常有用的。
IOC同时又比较抽象,大家应该一边听课一边做自己的总结归纳,最后 再对比课程的讲解,这样可以更好的理解Java这个语言。

七月老师的要求让不懂Java的小白都能看懂的文章

  • Inversion Of Controll 控制反转
  • Dependency Injection 依赖注入

当我们看到这两个学术化的名词呢, 往往容易劝退新手, 但是不要慌张, 这东西难也不会难道哪里去, 我们又不是造火箭和大炮的

什么是 IOC (控制反转)?

​ 学术化说法: 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

从学术化的说法中我们能知道什么呢?

  • IOC(控制反转) 不是技术, 而是一门 面向对象编程中的思想
  • 可以通过IOC来减少代码之间的耦合度

大抵概念就是这些, 来来回回应该就围绕着来展开


为什么我们要使用IOC?

既然是一种设计思想, 那么他能该我们带来什么呢?

一种好的设计思想可以指导我们设计出松耦合的, 优良的程序.

他可以打破我们传动的思维方式! 其实也不算举个栗子就好解释了.


我是桃李, 我今天想吃一碗面, (程序中想达到的目标, 需求)

我买了面条, 番茄, 青菜, 辣椒 (这是完成这个需求需要的东西, 程序中就是需要new 一个对象引入进来)

我需要开火, 烧水 放面条, 青菜, 辣椒调味, 关火等步骤 (这是操作琐碎的过程, 在理解IOC不占大比重)

最后我得到了一碗 七月牌小面 每次做一碗面我基本都要重复上面第二条, 第三条的操作

以上就是传统的思维模式


接下来介绍引入IOC会是什么变化:

我是桃李, 我今天想吃一碗面, (程序中想达到的目标, 需求)

我来到一家七月面馆, 我和 7七月说 我想要一个七月牌小面微辣

过一会巴拉巴拉, 7七月师傅就做好端在我面前说, 客官您享用哎

最后! 我还是得到了一碗 七月牌小面


看到了吧, 其实面馆就是我们所说的IOC控制反转, 所谓反转反转 就是把主动的我 也就是桃李这个人

从主动 到 被动


在程序开发当中, 我们把琐碎的准备食材这个过程交给我们的面馆(IOC), 当我们需要的时候就依赖注入(DI)

传递给我, 我们就可以很轻松的达到我们想要的目的, 降低我们代码耦合, 写出更松耦合的代码提高代码质量!


IOC (控制反转)名词解释

控制: 控制什么呢? 当然是IOC容器控制了对象, 在此之前, 对象都是自己主动获取外部资源, 现在把任务交给了IOC
反转: 在此之间是自己直接获取外部资源, 现在是IOC容器进行查找并且依赖注入对象, 对象只是被动的接收参数即可

七月小面很形象了, 在此之前都是自己找食材, 现在去了商店 他给你材料并且帮你做好

DI(依赖注入)

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象
上面这句话是其他博主写的 博主
其实很好理解, 还是七月的面, 需要辣椒酱的时候向七月说一声他就帮你注入到你的碗里,
在编码的时候, 需要某个Connection对象, 紧接着我们告诉IOC, 让IOC给你查找然后注入到你的对象中实现目标。

理解Java的OCP和IOC原理相关推荐

  1. 一文带你理解Java中Lock的实现原理

    转载自   一文带你理解Java中Lock的实现原理 当多个线程需要访问某个公共资源的时候,我们知道需要通过加锁来保证资源的访问不会出问题.java提供了两种方式来加锁,一种是关键字:synchron ...

  2. 深入理解Java并发之synchronized实现原理

    [版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/72828483 出自[zejian ...

  3. Java基础——Java反射机制及IoC原理

    一.概念 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.在java中,只要给定类的名字, 那么就可以通过反射机制 ...

  4. Java:Spring的IOC原理(大白话解释)

    先行参考以下半成品文章和参考链接,待学完课程后续整理此文章 IOC和DI关系 IOC:Inversion of Control,控制反转 DI:Dependency Injection,依赖注入 关系 ...

  5. 理解Java和C语言编译原理

    C语言代码的编译原理: http://blog.csdn.net/neil_wesley/article/details/51265457 Java语言的编译原理: http://www.cnblog ...

  6. 深入理解Java中的底层阻塞原理及实现

    谈到阻塞,相信大家都不会陌生了.阻塞的应用场景真的多得不要不要的,比如 生产-消费模式,限流统计等等.什么 ArrayBlockingQueue. LinkedBlockingQueue.DelayQ ...

  7. 彻底理解Java深克隆和浅克隆的原理及实现

    一.为什么要克隆? 答案是:克隆的对象可能包含一些已经修改过的属性,保留着你想克隆对象的值,而new出来的对象的属性全是一个新的对象,对应的属性没有值,所以我们还要重新给这个对象赋值.即当需要一个新的 ...

  8. 从tomcat说起全面理解Java web开发原理

    从tomcat说起全面理解Java web开发原理 简介:Java开发分为Java ME,Java SE,Java EE.回顾过去这些的开发工作基本上都是围绕着Java EE的,在开发经历中分别经历了 ...

  9. 自顶向下彻底理解 Java 中的 Synchronized

    阅读本文至少要知道 synchronized 用来是干什么的... 需要的前置知识还有 Java 对象头和 Java 字节码的部分知识. synchronized 的使用 synchronized 有 ...

最新文章

  1. 增加了一行代码,让我们提高了 3000% 的性能
  2. 直观讲解一下 RPC 调用和 HTTP 调用的区别!
  3. R探索新数据分析(Exploratory Data Analysis,EDA)
  4. oracle的dual表
  5. Objective-C单例
  6. 生成可执行jar文件
  7. 整理 | 编程技术学习资源汇总
  8. DOM 事件深入浅出(二)
  9. java封装demo_java封装
  10. Atitit 遍历 与循环模式大总结 目录 1.1. 遍历的对象 数组 或对象 或对象数组 1 2. 遍历的概念 2 2.1. 祖先后代同胞 过滤 2 3. 常见的遍历四种方式 2 3.1.
  11. Thrift 入门教程【转】
  12. 基于人工智能的搜索引擎优化软件-市场现状及未来发展趋势
  13. 什么是网络智能运维?如何保障业务7x24小时在线?
  14. log(一)——MDC入门
  15. Greenplum集群部署和架构优化,我总结了5000字的心得
  16. Clock and Jitter Phase Noise
  17. 品优购注册页html
  18. Ubuntu18修改host文件加速访问Github
  19. Keyshot+AD渲染PCB效果图
  20. 连续数值变量的离散化、哑变量

热门文章

  1. Springboot 中运用cookie处理
  2. Excel表格中函数CEILING的用法
  3. 创新界,聚势行 | 2022人大金仓“百城巡展”火热开启
  4. python123监考系统_来自监考老师的叮嘱,这些考试小细节千万不能忽视,决定成绩分数...
  5. 数字逻辑:组合逻辑原件
  6. 关于面向对象 女神告诉你什么是三大特性
  7. 上传文件到云服务器存储路径,配置WordPress上传图片/附件文件同步到UPYUN又拍云存储...
  8. Transformer前言:self-attention与Multi-Headed Attention的详细理解
  9. gather() 的函数功能
  10. 学生信息管理系统的设计与实现 计算机毕设源码70168