我仍在学习 AngularJS,并且对它们的依赖注入风格有疑问。例如,假设我有一个DataProcessor
服务,它有一个接收参数的processData
方法,uri
它需要读取该数据(可能是 xml、json 等),然后对其执行一些操作。构造DataProcessor
函数接受一个DataReader
知道如何读取特定文件类型的接口的实现。以下是我正在谈论的一些示例服务:
// implementations of the DataReader interface
myApp.service('XmlDataReader', function() {
this.readData = function(uri) {
// read xml data from uri
}
}]);
myApp.service('JsonDataReader', function() {
this.readData = function(uri) {
// read json data from uri
}
}]);
// data processing service that takes in an implementation of a DataReader
myApp.service('DataProcessor', ['DataReader', function(DataReader) {
this.processData = function(uri) {
var readData = DataReader.readData(uri);
// process data and return it
}
}]);
从典型的依赖注入角度来看,可以将特定类型的DataReader
传递给DataProcessor
并使用,如下所示:
var dataProcessor = new DataProcessor(new JsonDataReader());
var processedData = dataProcessor.processData('dataz.json');
AngularJS 的做法是什么?