Skip to content

Instantly share code, notes, and snippets.

View alibahaaa's full-sized avatar
❤️‍🔥
Coding with love and passion

Ali Baha alibahaaa

❤️‍🔥
Coding with love and passion
View GitHub Profile
class ConcreteFactory1 : AbstractFactory {
override fun createProductA(): ProductA {
return ConcreteProductA1()
}
override fun createProductB(): ProductB {
return ConcreteProductB1()
}
}
class ConcreteProductA1 : ProductA {
override fun use() {
// implementation
}
}
class ConcreteProductA2 : ProductA {
override fun use() {
// implementation
}
interface ProductA {
fun use()
}
interface ProductB {
fun use()
}
interface AbstractFactory {
fun createProductA(): ProductA
fun createProductB(): ProductB
}
interface RetrofitApi {
fun create(): Retrofit
}
class ProductionRetrofitApi : RetrofitApi {
override fun create(): Retrofit {
val retrofit = Retrofit.Builder()
.baseUrl("https://production-api.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
class ConcreteCreatorA : Creator() {
override fun factoryMethod(): Product {
return ConcreteProductA()
}
}
class ConcreteCreatorB : Creator() {
override fun factoryMethod(): Product {
return ConcreteProductB()
}
abstract class Creator {
abstract fun factoryMethod(): Product
fun someOperation() {
val product = factoryMethod()
product.use()
}
}
class ConcreteProductA : Product {
override fun use() {
// implementation
}
}
class ConcreteProductB : Product {
override fun use() {
// implementation
}
interface Product {
fun use()
}
fun <T> Koin.getDependency(objCClass: ObjCClass): T? = getOriginalKotlinClass(objCClass)?.let {
getDependency(it)
}