Manufacturing unit technique is only a non-static technique
Let’s face it, this sample is only a technique normally backed by easy protocols & lessons. Begin with a extremely easy instance: think about a category that may create a base URL on your service endpoint. Let’s name it service manufacturing unit. 😅
class ServiceFactory {
func createProductionUrl() -> URL {
return URL(string: "https://localhost/")!
}
}
let manufacturing unit = ServiceFactory()
manufacturing unit.createProductionUrl()
You may assume, that hey, this isn’t even near a manufacturing unit technique sample, however watch for it… let’s make issues a little bit bit sophisticated by making a protocol for the service class and a protocol for returning the URL as properly. Now we will implement our base manufacturing URL protocol as a separate class and return that particular occasion from a manufacturing service manufacturing unit class. Simply verify the code you may get it:
protocol ServiceFactory {
func create() -> Service
}
protocol Service {
var url: URL { get }
}
class ProductionService: Service {
var url: URL { return URL(string: "https://localhost/")! }
}
class ProductionServiceFactory: ServiceFactory {
func create() -> Service {
return ProductionService()
}
}
let manufacturing unit = ProductionServiceFactory()
let request = manufacturing unit.create()
Why did we separated all of the logic into two lessons and protocols? Please consider me decoupling is an efficient factor. Any further you possibly can simply write a mocked service with a dummy URL to mess around with. Clearly that’d want an identical manufacturing unit class.
These mock situations would additionally implement the service protocols so you possibly can add new sorts in a comparatively painless method with out altering the unique codebase. The manufacturing unit technique solves one particular downside of a easy manufacturing unit sample. If the checklist – contained in the switch-case – turns into too lengthy, sustaining new objects can be hell with only one manufacturing unit. Manufacturing unit technique solves this by introducing a number of manufacturing unit objects.