Scala Language
निर्भरता अन्तःक्षेपण
खोज…
आंतरिक कार्यान्वयन वर्ग के साथ केक पैटर्न।
//create a component that will be injected
trait TimeUtil {
lazy val timeUtil = new TimeUtilImpl()
class TimeUtilImpl{
def now() = new DateTime()
}
}
//main controller is depended on time util
trait MainController {
_ : TimeUtil => //inject time util into main controller
lazy val mainController = new MainControllerImpl()
class MainControllerImpl {
def printCurrentTime() = println(timeUtil.now()) //timeUtil is injected from TimeUtil trait
}
}
object MainApp extends App {
object app extends MainController
with TimeUtil //wire all components
app.mainController.printCurrentTime()
}
उपर्युक्त उदाहरण में, मैंने दिखाया कि TimeUtil को MainController में कैसे इंजेक्ट किया जाए।
सबसे महत्वपूर्ण वाक्यविन्यास स्व-एनोटेशन ( _: TimeUtil =>
) है जो TimeUtil
को MainController
में MainController
। एक और शब्द में, MainController
पर निर्भर करता है TimeUtil
।
मैं प्रत्येक घटक में आंतरिक वर्ग (जैसे TimeUtilImpl
) का उपयोग करता हूं, क्योंकि मेरी राय में, यह परीक्षण के लिए आसान है क्योंकि हम आंतरिक वर्ग का मजाक TimeUtilImpl
सकते हैं। और यह ट्रेस करने के लिए भी आसान है कि प्रोजेक्ट को अधिक जटिल होने पर विधि कहाँ से कॉल की जाती है।
अंत में, मैं सभी घटक को एक साथ तार करता हूं। यदि आप Guice से परिचित हैं, तो यह Binding
बराबर है
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow