深入理解 Daze.js 之 IoC 容器原理

JavaScript030

深入理解 Daze.js 之 IoC 容器原理,第1张

Daze.js 底层通过容器的模式设计,所有功能都是基于这个容器进行构建,通过容器,我们可以实现解耦、依赖注入等功能

我们创建一个普通的类

然后再创建一个可能会被依赖的类

第一个类依赖了第二个类

这种形式就是我们最常见的模式,简单的依赖关系,看起来也还ok,但是如果依赖多了呢?

我们可以看到,每次实例化 Example 的时候都需要实例化对应依赖的对象

为了解决这个问题,有人就提出了工厂模式

为了实现这个功能,我们需要一个可以实例化不同依赖的工厂

有了这个工厂,我们就可以只修改工厂的种类就可以自动实例化不同的依赖对象了

我们可以看到,刚刚的工厂其实只是把多个依赖转移到了对工厂的依赖,工厂内部还是需要手动增加各种以来的生产线,如何解决这个问题呢,那就是依赖注入

我们改造一下Example的类

我们把内部的依赖在外部实例化然后通过构造函数或者其他方法注入到类中,这就是依赖注入,是不是很简单,理解了依赖注入后,我们就可以开始 IoC容器了

不管如何,现在都是通过手动注入的方式进行以来管理,那么我们可不可以自动化管理依赖呢,我们只要声明需要注入的依赖即可,这时候 IoC 容器出现了

一个 IoC 容器就粗略的完成了,我们来试验一下它是如何工作的

这个可以用来实例一种依赖的容器,只要稍加修改就可以支持多依赖管理,大家可以自己动手试试~~~~~

当然 Daze.js 容器不止这些功能, 还有自动实例化、实例标签、上下文注入等等.....

官网

项目地址

第一阶段内容Java设计和编程基础(OOD和OOP)

主要内容涉及技术知识点课时总长

Java语言基础

Java语言、Java环境变量、变量、运算符、表达式、分支语句、循环语句、数组,数组应用,行业规范。双色球抽奖程序实现。

5天

Java面向对象

类、对象、属性、方法、构造、封装、继承、多态、重写、重载、访问权限控制符、this和super、static、单例设计模式、final、抽象类和接口、模板设计模式、内部类

5天

JavaSE核心类库

Java核心类、Java字符串、日期处理、包装类、集合、数据结构、异常和异常处理、JavaIO、多线程编程、线程同步机制、并发包、JAVA网络编程、Java泛型、Java反射机制。

10天

Java设计

设计原则、设计模式、常见算法、Java8/9新特性、Maven使用、SVN版本管理、Lamda表达式、Git、IDEA工具

2天

第二阶段内容数据库技术和Web前端技术(H5/JS)

主要内容涉及技术知识点课时总长

Oracle数据库开发

SQL语句、SQL语句原理、SQL语句优化、表、视图、序列、索引、Oracle数据字典、存储过程、函数、触发器、PL/SQL开发、数据库设计原则等

6天

JDBC

JDBC核心API、JDBC优化技术(缓存技术、批处理技术、dbcp、c3p0等数据库连接池)

2天

XML

XML语法、XML解析(SAX、DOM、Dom4j)

1天

Web前端基础(HTML5/CSS3/JS)

HTML5(H5)基本文档结构、链接、列表、表格、表单CSS基础语法、盒子模型、浮动布局、定位JavaScript语言基础、DOM编程、事件模型等。

HTML5画布、Web存储、地理定位、音频/视频、拖放、WebSocket技术等

CSS边框、背景、文本效果、字体、动画等

8天

Web前端高级

jQuery框架

JQuery、JQuery对象、元素选择器、DOM操作、属性操作、CSS操作、动画效果、JQuery插件等

2天

Web前端高级

Vue

Bootstrap

jQuery扩展插件

安装、使用、模板语法、条件、循环、事件处理、表单等

BootstrapCSS、布局组件、插件、编辑器

highcharts图表组件

jquery表单校验、弹框等插件

3天

第三阶段内容JavaWeb技术和主流框架

主要内容涉及技术知识点课时总长

JSP&Servlet

JSP语法、JSP标记、自定义标记、JSTL和EL表达式、JSP新特性、MVC设计模式、Servlet生命周期及Servlet服务器、Servlet过滤器和监听器、Tomcat配置和部署等

MySQL安装、使用、Java访问MySQL等

8天

AJAX框架

Ajax基础、XHR对象、Ajax设计模式、JSON技术、jQuery中Ajax函数等

2天

Spring

SpringIoc、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、SpringAOP原理、AspectJ、SpringJDBC支持、Spring事务及安全管理、SpringMVC、RESTful技术、Spring国际化SpringSecurity、ApacheShiro、Spring整合Shiro等

8天

SpringBoot

SpringCloud

Spring-BootServlet、过滤器、监听器、拦截器、启动加载、数据库连接、多数据源、动态数据源、事务、Spring-BootShiro权限管理、Spring-BootJDBC访问数据库、Spring-BootMyBatis访问数据库等

Spring-Cloud分布式配置管理、服务注册

5天

MyBatis

MyBatis映射基础,DQL映射,DML映射,结果集映射,高级动态SQL映射,SqlSession的使用,SprigMyBatis整合,MyBatis分页处理、关联查询映射等

2天

NoSQL

Redis原理、Redis命令、JavaRedisAPI、Redis集群和缓存

MongoDB原理、MongoDB命令、JavaMongoDBAPI

3天

Struts2&Hibernate

Struts2控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用、HibernateAPI、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、Hibernate缓存技术、SSH整合

6天

第四阶段内容项目实战、企业解决方案

主要内容涉及技术知识点课时总长

企业项目

企业实战

解决方案

CRM/P2P系统开发实战

Linux企业级应用操作部署方案

企业项目研发流程、规范和常见架构方案

消息服务解决方案

搜索服务解决方案

负载均衡解决方案

企业常见业务解决方案

应用集群解决方案

数据库集群解决方案

安全服务解决方案

分布式服务解决方案

缓存服务解决方案

高并发、集群模式整合解决方案

Workflow工作流解决方案

15天

第五阶段内容就业冲刺课程

主要内容课时总长

技术串讲、企业面试题实战

3天

项目面试实战

2天

技术答疑、面试指导、就业推荐服务

无期限

第六阶段内容热点技术、案例、工具应用(免费赠送)

微信小程序/公众号开发,基于Java+微信API开发小程序和公众号

Java+区块链开发,基于Java+区块链技术开发的案例