当需要构建对象图(一组有引用关系的对象), 也包括对象需要一些构建的参数等情况, 应该使用工厂, 建造者模式, 或者IoC容器的依赖注入等, 目的是把这些对象的构建工作分离出去....可new的对象就是对象图里的终点, 例如实体或者值对象(Value Object)等....为了易于测试, 针对这两类构造, 有下列规则:
可注入的对象可以在构造函数请求(注入)其它的可以注入对象, 但是不能在构造函数请求可new的对象....反过来, 可new的对象可以在构造函数请求其它的可new对象, 但是不能在构造函数请求可注入的对象.
例子
第一个例子
?...该例子中, LoggingService的Log方法需要一个Area类型的对象, 它是一个值对象.
所以它的错误就是, 不应该把可new的对象注入到可注入的对象里.