加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

对依赖注入的一些理解

发布时间:2020-12-13 22:36:58 所属栏目:百科 来源:网络整理
导读:今天在公司没事,顺手翻了下同事一本strtus2的书。这种前端MVC框架简直渣的不行,怪不得SSH是外包公司专用呢。Java开发者很奇怪的一个想法就是总想用JAVA语言和xml标签去解决一切事情,却反而把很多事情变得更加复杂、繁琐、无法通用和定制。至少struts2的前

今天在公司没事,顺手翻了下同事一本strtus2的书。这种前端MVC框架简直渣的不行,怪不得SSH是外包公司专用呢。Java开发者很奇怪的一个想法就是总想用JAVA语言和xml标签去解决一切事情,却反而把很多事情变得更加复杂、繁琐、无法通用和定制。至少struts2的前后端耦合实在严重,非要用java解决本该在浏览器客户端解决的事情,关键是还做不好。

不过JAVA框架的设计模式还是很值的学习,今天略微看了一下依赖注入dependency injection.

如果有两个组件A和B,且A依赖于B(B是A的一个依赖)。在A中使用B就需要取得B的一个实例。

public class A {
     public void depOnB() {
         B b = new B();
         b.xxxxx();
     }
}
A依赖于B,就需要在A中初始化B的一个实例。但是B很可能是有多种实现,一般情况下可以用一个工厂类来产生,但是需要写比较复杂繁琐的代码。这个时候就可以在A中创造一个B的构造器。就可以从A的外部获得B的类型,然后在A中使用B的实例。


如:

public class PersistenceManager {
    public void store(Object object) {
        DataSource datasource = ...//obtain datasource
        try {
             Connection con = datasource.getConnection();
            //....
        } catch (SQLException e) {

        }
    }
}
这个例子中需要实例datasouce,我们可以提供一个接受依赖关系的构造器
<pre name="code" class="java">public class PersistenceManager {
    private DataSource datasource;
    public PersistenceManager(DataSource datasource) {
         this.datasource = datasource;
    }
    public void store(Object object) {
     
        try {
             Connection con = datasource.getConnection();
            //....
        } catch (SQLException e) {

        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读