美文网首页
内联函数简化抽象工厂

内联函数简化抽象工厂

作者: bravelion | 来源:发表于2019-09-30 20:27 被阅读0次

1.通过invoke用inline定义为内联函数,同时引入reified关键字,使用具体化参数类型的语法特性

2.实现

interface Computer

class Dell: Computer

class Asus: Computer

class Acer: Computer

class DellFactory : AbstractFactory(){

override fun produce() = Dell()

}

class AsusFactory : AbstractFactory(){

override fun produce(): Computer = Asus()

}

class AcerFactory : AbstractFactory(){

override fun produce(): Computer = Acer()

}

open abstract class AbstractFactory {

abstract fun produce(): Computer

companion object {

inline operator fun invoke(): AbstractFactory =

when (T::class) {

Dell::class -> DellFactory()

Asus::class -> AsusFactory()

Acer::class -> AcerFactory()

else ->throw IllegalArgumentException()

}

}

}

3.调用

val dellFactory = AbstractFactory<Dell>()

val dell = dellFactory.produce()

本文摘自《Kotlin核心编程》

相关文章

  • 内联函数简化抽象工厂

    1.通过invoke用inline定义为内联函数,同时引入reified关键字,使用具体化参数类型的语法特性 2....

  • Kotlin系列之let、with、run、apply、also

    目录: 一、回调函数的Kotin的lambda的简化二、内联扩展函数之let三、内联函数之with四、内联扩展函数...

  • inline、noinline和crossinline区别

    内联函数 内联函数消除了Lambda表达式所带来的运行时内存开销,简化编码方式 正常函数 decompile后的J...

  • iOS 工厂模式(简单工厂)

    工厂模式简单工厂模式具体工厂,简化生产流程,隔离生产细节,产品有一些共同功能。抽象工厂模式工厂类是抽象的,客户端需...

  • 使用拓展方法+内联函数,干掉模板代码

    使用拓展方法+内联函数前 使用拓展方法+内联函数后 实现原理 看上面的简化写法,你一定会有两个疑问: viewPa...

  • JS-day3 +闭包

    map 函数 : 数组利用map函数迭代执行函数,高度抽象化,简化流程 reduce方法 ************...

  • C++第二弹---函数

    内联函数 内联函数的定义内联函数也叫内嵌函数,他主要是解决程序运行效率。当内联函数收到编译器的指示时,即可发生内联...

  • Kotlin(九)设计模式-创建型-抽象工厂

    创建型模式 - 抽象工厂简化 我们有很多电脑的品牌,如:Dell,Asus,Acer 那么就需要在增加一个工厂类,...

  • JavaScript创建对象的方法

    一、工厂模式 工厂模式的出现解决了重复通过字面量创建的方式 二、构造函数 构造函数的出现简化工厂模式:1.没有显示...

  • 从Swift函数式编程到设计模式(三)

    与抽象工厂模式相比,使用柯里化函数充当函数工厂,我们可以更轻松地基于一些条件创建一系列工厂方法。 柯里化函数(Cu...

网友评论

      本文标题:内联函数简化抽象工厂

      本文链接:https://www.haomeiwen.com/subject/tguhpctx.html