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