Skip to content

Instantly share code, notes, and snippets.

@Wassmd
Created February 14, 2020 22:34
Show Gist options
  • Save Wassmd/1a39cbb98c6c78760d79805687ed31a3 to your computer and use it in GitHub Desktop.
Save Wassmd/1a39cbb98c6c78760d79805687ed31a3 to your computer and use it in GitHub Desktop.
import UIKit
class BaseViewModel {
let service: String
init(service: String) {
self.service = service
}
func baseVieModelFunction() {
print("BaseViewModel")
}
}
class CameraViewModel: BaseViewModel {
override func baseVieModelFunction() {
super.baseVieModelFunction()
print("CameraViewModel")
}
func cameraViewModelOwn() {
print("CameraViewModelOwnFun")
}
}
class PhoneViewModel: BaseViewModel {
override func baseVieModelFunction() {
print("Phone baseFunction")
}
func PhoneViewModelOwnFunc() {
print("PhoneViewModelOwnFun")
}
}
class BaseController<T: BaseViewModel> {
let viewModel: T
init(viewModel: T) {
self.viewModel = viewModel
}
func baseFunction() {
print("base Function")
}
}
class CameraController: BaseController<CameraViewModel> {
init(cameraViewModel: CameraViewModel) {
super.init(viewModel: cameraViewModel)
}
override func baseFunction() {
super.baseFunction()
print("Camera baseFunction")
}
}
class PhoneController: BaseController<BaseViewModel> {
init(phoneViewModel: PhoneViewModel) {
super.init(viewModel: phoneViewModel)
}
override func baseFunction() {
print("Phone baseFunction")
}
}
let cameraController = CameraController(cameraViewModel: CameraViewModel(service: "Camera Service"))
cameraController.baseFunction()
cameraController.viewModel.cameraViewModelOwn()
cameraController.viewModel.baseVieModelFunction()
let phone = PhoneController(phoneViewModel: PhoneViewModel(service: "Phone service"))
phone.baseFunction()
phone.viewModel.baseVieModelFunction()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment