容器与Java依赖注入

Java container

1.什么是Java container?

顾名思义,它是一个Java容器,容器一般是用来装东西的,而Javacontainer是一个Java编写的程序,如:Tomcat,resin,weblogic。为了方便对象管理,引入数据容器概念,数据容器来管理数据。我们在使用Java时,会声明很多对象,但是对象管理很不方便,有了数据容器之后我们能方便的通过容器类来管理自己的对象。如Java中的Collection和Map,都是数据容器。

2.容器有什么好处?

在管理数据方面,不同的容器有不同的特性,若果不用容器,管理数据特别麻烦。比如你定义了一个Person类,但是你现在想要声明多个人p1,p2......等,你要多个变量保存,但是用了collection之后你只需要add方法添加到set里面就好了。当然不同的容器实现由不同的特点:

     List承诺可以将元素维护在特定的序列中。它的优点在于随机访问元素快,但是在中间插入和移除比较慢那么现在我们就一起来看看为什么ArrayList随机访问快,而插入移除比较慢。LinkedList它是通过代价较低在List中间进行插入和移除,提供了优化的顺序访问,但是在随机访问方面相对较慢。但是他的特性功能要比ArrayList强大的多。支持Queue和StackListedList采用的是链式存储。链式存储就会定一个节点Node。包括三部分前驱节点、后继节点以及data值。所以存储存储的时候他的物理地址不一定是连续的。

      Set也是一个集合,但是他的特点是不可以有重复的对象,所以Set最常用的就是测试归属性,很容易的询问出某个对象是否存在Set中。并且Set是具有和Collection完全一样的接口,没有额外的功能,只是表现的行为不同。HashSet查询速度比较快,但是存储的元素是随机的并没有排序。TreeSet是将元素存储红-黑树结构中,所以存储的结果是有顺序的(所以如果你想要自己存储的集合有顺序那么选择TreeSet)。 

  • list  

  • set

  • queen

       队列是典型的先进先出的容器,就是从容器的一端放入元素,从另一端取出,并且元素放入容器的顺序和取出的顺序是相同的。LinkedList提供了对Queue的实现,LinkedList向上转型为Queue。其中Queue有offer、peek、element、pool、remove等方法。offer是将元素插入队尾,返回false表示添加失败。peek和element都将在不移除的情况下返回对头,但是peek在对头为null的时候返回null,而element会抛出NoSuchElementException异常。poll和remove方法将移除并返回对头,但是poll在队列为null,而remove会抛出NoSuchElementException异常

  • map

       Map在实际开发中使用非常广,特别是HashMap,想象一下我们要保存一个对象中某些元素的值,如果我们在创建一个对象显得有点麻烦,这个时候我们就可以用上map了,HashMap采用是散列函数所以查询的效率是比较高的,如果我们需要一个有序的我们就可以考虑使用TreeMap。这里主要介绍一下HashMap的方法,大家注意HashMap的键可以是null,而且键值不可以重复,如果重复了以后就会对第一个进行键值进行覆盖。put进行添加值键对,containsKey验证主要是否存在、containsValue验证值是否存在、keySet获取所有的键集合、values获取所有值集合、entrySet获取键值对。

参考博客:https://www.cnblogs.com/LipeiNet/p/5888513.html

dependency injection

1.什么是dependency injection?

 (DI)即依赖注入,它是与容器,控制反转一同联系的概念。控制反转,即将类的创建变为从入口类中向容器申请创建一个对象,然后容器将对象给申请者。这里容器拥有控制权,这就是控制反转。控制反转中获取资源的过程叫依赖注入,分为三种方式:构造注入,设置注入,接口注入。可参考  博客

2.优点,缺点。

Java依赖注入的好处 一些使用Java依赖注入的好处如下:关注点分离 应用程序类中的样板代码减少,因为所有用于初始化依赖性的工作都由注入器组件处理 配置组件使应用程序易扩展 通过模拟对象来单元测试会很简单 Java依赖注入的缺点

Java依赖注入也有一些缺点: 如果过度使用,可能会导致维护问题,因为更改的影响只有在运行时才知道。 Java中的依赖注入可能会隐藏导致运行时错误的服务类的依赖性,这会在编译时被捕获。 以上就是Java中的依赖注入模式。当我们控制服务时,了解和使用它是很好的。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值