// Dependency Injection using Initializers
class CameraManager {
let captureSession: AVCaptureSession
init(captureSession: AVCaptureSession) {
self.captureSession = captureSession
}
func setupCamera() {
// Camera setup code
}
}
// Usage
let customCaptureSession = AVCaptureSession()
let cameraManager = CameraManager(captureSession: customCaptureSession)
cameraManager.setupCamera()
// Dependency Injection using Property Injection
class VideoRecorder {
var captureSession: AVCaptureSession?
func setupCamera() {
// Camera setup code
}
}
// Usage
let recorder = VideoRecorder()
recorder.captureSession = AVCaptureSession()
recorder.setupCamera()
// Dependency Injection using Protocols
protocol CameraConfigurable {
func configureSession() -> AVCaptureSession
}
class CustomCamera: CameraConfigurable {
func configureSession() -> AVCaptureSession {
let session = AVCaptureSession()
// Configuration code
return session
}
}
class CameraHandler {
let camera: CameraConfigurable
init(camera: CameraConfigurable) {
self.camera = camera
}
func startCamera() {
let session = camera.configureSession()
// Start camera
}
}
// Usage
let customCamera = CustomCamera()
let cameraHandler = CameraHandler(camera: customCamera)
cameraHandler.startCamera()
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?