今天在公司没事,顺手翻了下同事一本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) {
}
}
}
1044

被折叠的 条评论
为什么被折叠?



