项目作者: malczak

项目描述 :
DI/SL for iOS
高级语言: Swift
项目地址: git://github.com/malczak/silicon.git
创建时间: 2014-03-31T11:09:50Z
项目社区:https://github.com/malczak/silicon

开源协议:MIT License

下载


Silicon

Simple dependency injection / service locator for Swift applications

Great if you’re tired of over-used singleton pattern.

Silicon advantages

  • all application services / models / what-ever-app-needs are defined in a service locator
  • all services are lazy initializated when requested and retained
  • access any service by name
  • use build-in dependency injection to inject services

simple usage example

Define service called apiService

  1. // each call to 'get("myService")' will create a new instance of 'MyServiceImpl' class
  2. Silicon.set("myService", shared:false) { (si) in
  3. let o = MySerivceImpl()
  4. o.setupInstance()
  5. return o
  6. };
  7. // this instance will be shared but only twice
  8. Silicon.set("mySharedService", shared:true, count: 2) { (si) in
  9. let o = MySerivceImpl()
  10. o.setupInstance()
  11. return o
  12. };

Session object will be created when requested for the first time. After creating service instance Silicon uses it in any subsequent requests.

Using defined service

  1. // get two different instances of 'myService'
  2. let instance1 = Silicon.get('myService')
  3. let instance2 = Silicon.get('myService')
  4. // in example below both 'shared1' and 'shared2' are pointing to the same instance
  5. let shared1 = Silicon.get('mySharedService')
  6. let shared2 = Silicon.get('mySharedService')
  7. // any following calls for 'mySharedService' will result in nil - service availability was set only to 2
  8. let shared3 = Silicon.get('mySharedService')