· 1 min learn
Let’s mix manufacturing facility technique with easy manufacturing facility voilá: right here is the summary manufacturing facility design sample written in Swift language!
Summary manufacturing facility in Swift
The summary manufacturing facility sample supplies a method to encapsulate a bunch of particular person factories which have a typical theme with out specifying their concrete courses.
So summary manufacturing facility is there so that you can create households of associated objects. The implementation normally combines easy manufacturing facility & manufacturing facility technique rules. Particular person objects are created by manufacturing facility strategies, whereas the entire thing is wrapped in an “summary” easy manufacturing facility. Now examine the code! 😅
// service protocols
protocol ServiceFactory {
func create() -> Service
}
protocol Service {
var url: URL { get }
}
// staging
class StagingService: Service {
var url: URL { return URL(string: "https://dev.localhost/")! }
}
class StagingServiceFactory: ServiceFactory {
func create() -> Service {
return StagingService()
}
}
// manufacturing
class ProductionService: Service {
var url: URL { return URL(string: "https://stay.localhost/")! }
}
class ProductionServiceFactory: ServiceFactory {
func create() -> Service {
return ProductionService()
}
}
// summary manufacturing facility
class AppServiceFactory: ServiceFactory {
enum Surroundings {
case manufacturing
case staging
}
var env: Surroundings
init(env: Surroundings) {
self.env = env
}
func create() -> Service {
swap self.env {
case .manufacturing:
return ProductionServiceFactory().create()
case .staging:
return StagingServiceFactory().create()
}
}
}
let manufacturing facility = AppServiceFactory(env: .manufacturing)
let service = manufacturing facility.create()
print(service.url)
As you may see utilizing an summary manufacturing facility will affect the entire utility logic, whereas manufacturing facility strategies have results solely on native components. Implementation can range for instance you may additionally create a standalone protocol for the summary manufacturing facility, however on this instance I wished to maintain issues so simple as I might.
Summary factories are sometimes used to realize object independence. For instance if in case you have a number of completely different SQL database connectors (PostgreSQL, MySQL, and so on.) written in Swift with a typical interface, you may simply swap between them anytime utilizing this sample. Similar logic might be utilized for something with an identical situation. 🤔
Associated posts
· 2 min learn
Study in regards to the initialization technique of the 2 well-known courses in UIKit. Say hi there to UIViewcontroller, and UIView init patterns.
· 4 min learn
Study the iterator design sample by utilizing some customized sequences, conforming to the IteratorProtocol from the Swift commonplace library.
· 4 min learn
Learn to use lazy properties in Swift to enhance efficiency, keep away from optionals or simply to make the init course of extra clear.
· 1 min learn
Let’s mix manufacturing facility technique with easy manufacturing facility voilá: right here is the summary manufacturing facility design sample written in Swift language!