首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用C++跟你聊聊“策略模式”

虽然网上大部分都是用Java写的设计模式,但是我竟然是用“伪代码”写的。。 所以我决定,接下来的每篇设计模式都用C++亲测。...回到上面那个超市促销活动,那个活动有什么共通点?或者说,那些促销方式有什么共同点?有的,最后都要结账的,不能拎着东西你就跑吧。 超市促销活动的UML策略模式类图 ?...就看它有没有纯虚函数。 而且,如果是抽象基类的话,是不能引用类对象,万年单身狗啊。...(300.0); cout << ret << endl; return 0; } 上面这套代码呢,其实是策略模式简单工厂的结合。...回顾策略模式 策略模式通过 定义一系列算法的方法,减少各种算法类与使用算法类之间的耦合(上面那个main,只能姐醋到一个cashcontex类)。

49120
您找到你想要的搜索结果了吗?
是的
没有找到

只用一行代码的单例模式

Java的五种单例模式写起来那叫一个复杂, 特别是考虑了并发情况下单例的实现,最短的单例也要10行左右。 Kotlin是怎么做到的?...没接触过Kotlin的同学可能比较懵逼,这个单例我该怎么用? 特别是当它在Java混编的时候Java该怎么调?...我们把上面的单例丰富一下,给它一个计算方法让它返回两个数的, object SimpleSingleton{ fun getResult(a : Int, b : Int):Int { return...下面给出JavaKotlin调用的代码, //Java SimpleSingleton.INSTANCE.getResult(1, 2); //Kotlin SimpleSingleton.getResult...语法糖 看了Kotlin编译后的字节码就明白了它的单例原理,其实只是一种语法糖, Kotlin中还有很多的语法糖,比如闭包,比如foreach(),以后会多多介绍Kotlin的东西。

38730

Kotlin入门(21)活动页面的跳转处理

倘若把这两行Java代码转换为Kotlin代码(复制这两行然后粘贴到kt文件中,Android Studio就会自动完成转换),则可看到活动跳转的Kotlin代码如下所示:     val intent...代码与Java代码主要有两点不同之处: 1、类内部指代自身的this关键字,Java的完整写法是“类名.this”,而Kotlin的完整写法是“this@类名”,当然二者均可简写为“this”;...所以Anko库提供了另一种符合习惯的写法,也就是利用Pair类把参数名参数值进行配对,Pair的第一个参数为字段名,第二个参数为字段值。...据此改写后的Kotlin跳转代码如下所示:     //第二种写法,利用Pair把参数名参数值进行配对     startActivity(            ...第五章的类对象中,介绍了Kotlin对数据类的写法,类名前面关键字data,Kotlin即可自动提供get/set、equals、copy、toString等诸多方法。

1.6K30

久闻大名的FragmentAndroid应用界面开发

这里写图片描述 它拥有它自己有别于(也相似与)活动的生命周期,基本上onActivityCreate方法以及之前的,就跟活动的onCreate差不多,而onDestroyView以及之后的类似于活动的onDestroy...layout_width="match_parent" android:layout_height="match_parent"> FragmentOne.java...获取到FragmentManager,活动中可以直接调用getFragmentManager()方法得到。 开启一个事务,通过调用beginTransaction()方法开启。...向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id待添加的碎片实例。 提交事务,调用commit()方法来完成。...这里写图片描述 连同一个活动之间的Fragment进行交互也非常简单: 他们之间的数据传递 ①Activit传递数据给Fragment: Activity中创建Bundle数据包,调用Fragment

72120

设计模式之 六大原则

一.单一职责 定义: 一个类承担的职责不宜过多,或者说就一个类而言,应该仅有一个引起它变化的原因 如果一个类的职责承担过多,如果涉及到其中每一个职责变动的时候,都要修改这个类,而且我们要复用这个类中的其中一个职责的时候也没法做到复用...Act耦合了curl方法,如果此时又有另外一个类要使用curl方法,这个类并不需要活动类的其它功能此时就不能复用Act的curl方法 只能在这个类里增加一个curl方法,如此下去,随着类越来越多,项目里到处是...定义 : 一个类应该尽量降低自己成员的访问权限,如果两个类不必发生直接通讯,那么这两个类就不应该直接发生相互作用,如果其中一个类要调用另外一个类的方法,可以通过第三者转发这个调用 这个原则强调尽量降低类之间的耦合度...此时根据迪米特法则完全可以引入一个对象当中间人,使得客户端不用直接db,cache交互。...实现全国卷统一接口),但是文科生理综不计入总分(空方法实现),理科生分科不计入总分(空方法实现), 接着北京,天津等直辖市纷纷效仿,深圳广州等城市还是按照综合考试,觉得这样有利于学生综合能力发展,这时候教育部想了个办法把学科分成主课

50230

Kotlin 1.4 现已发布,专注于质量性能

为了帮助您充分利用 Kotlin 1.4 中引入的变更改进,我们邀请所有人参加 Kotlin 1.4 在线活动,在为期四天的活动中,您将能够参与 Kotlin 演讲、Kotlin 团队问答等活动——完全免费... Kotlin 1.4.0 中,我们发布了几项正在进行的工作: 更强大的新类型推理算法默认启用。它可以更多用例中自动推理类型,即使复杂的场景下也支持智能转换,改进了委托属性的推理,等等。...特定于 Kotlin/JVM 的语言功能: 我们添加了新的实验方法,用于字节码的接口中生成默认方法(对于 Java 8 目标)。 我们为null 检查引入了统一的异常类型。...Kotlin现在可以 JVM 字节码中生成类型注释,以便它们在运行时可以 Java 反射中使用。该功能适用于目标版本 8 及更高版本,到目前只实验模式下被发布。...我们 KotlinConf 上承诺进行一些重要改进,在此很高兴地报告我们的工作成果: 得益于分层项目结构,您现在可以目标的特定子集(例如类似的 iOS ARM64 设备目标 x64 模拟器目标)之间共享代码

1.8K30

Saleforce 基于 Kotlin 构建数据管道的探索实践

作者 | Saleforce 工程博客 译者 | 王强 策划 | 蔡芳芳 直到最近,我们都许多公司一样基于 Java 或 Scala 的那几种技术(包括 Apache Spark、Storm ... Java 中使用 Kotlin 接口也几乎不存在摩擦,并且我们 Kotlin 中实现的 API 还被其他使用 Java 的团队用上了。...使用 when 构造的详尽模式匹配:从第 8 行开始,Kotlin 的 when 表达式对枚举值 case 类进行详尽的模式匹配。...3Kotlin 用于 Salesforce 的活动平台 活动平台(Activity Platform)是我们的一个大数据事件处理引擎,每天摄取分析 100 多万次客户交互,以自动捕获数据、生成见解推荐...如上图所示,我们广泛采用了 Kotlin 代替 Java 进行活动平台的后端开发工作。

74110

即学即用Kotlin - 协程

在这一次分享中,发现 Flow Channel 这一块儿知识是自己不怎么了解的,本文也将着重大家聊一聊这一块儿的内容,协程部分将分为三篇,本文是第一篇: “《即学即用Kotlin - 协程》 《抽丝剥茧...除了 launch,还有一个方法跟它很像,就是 async,它的作用是创建一个协程,之后返回一个 Deferred对象,我们可以调用 Deferred#await()去获取返回的值,有点类似于 Java...常见的场景有: 耗时操作:使用 withContext 切换到指定的 IO 线程去进行网络或者数据库请求。 等待操作:使用delay方法去等待某个事件。...三、通道 Channel是一个面向多协程之间数据传输的 BlockQueue。它的使用方式超级简单: lifecycleScope.launch { // 1....学习协程 kotlin 还是很有必要的,我们团队开发新的功能的时候,也全部选择了 Kotlin。 关于我 我是九心,新晋互联网码农,如果想要进阶和了解更多的干货,欢迎关注我的最新文章。

1.5K20

Android Studio 4.0重磅发布:全新的 Motion 编辑器及众多更新都在这里!

它可以在当前运行应用上的视图之间导航、动画化过渡,同时还能保持像素级调试 UI 的能力。...线程活动的并排分析更轻松 为了更轻松地进行并排分析,你现在可以 Thread Activity(线程活动)时间轴中查看所有线程活动(包括方法、函数事件),并使用新的导航快捷方式轻松移动数据(例如使用...更多信息参考: http://d.android.com/studio/build/build-analyzer Java 8 语言库 D8 R8 中 desugaring 早期版本的 Android...这意味着你现在可以使用标准语言 API 了,以前它们只最新的 Android 版本中可用(例如 java.util.stream,java.util.function java.time)。...构建 Bulid Analyzer:了解并解决构建中的瓶颈 Java 8 语言支持更新:无论你的应用的最低 API 级别如何,均可使用这些 API 功能对功能的依赖:定义动态功能模块之间的依赖关系

4.6K30

大话设计模式--第二章 策略设计模式

这个类将前端输入业务逻辑混合在一块了. 不利于维护, 扩展, 复用, 也不灵活....假如: 现在商场搞活动, 所有商品打折, 7折, 过一段时间, 商场又搞活动, 所有商品打5折 国庆节, 商品满200减50....并且每次增加新的活动的时候, 又不会影响到原来的活动. 对了, 简单工厂设计模式, 我们之前刚刚学过的. 下面看看简单工厂设计模式的UML图: ?...如果活动很频繁, 经常会搞各种各样的活动, 那么业务逻辑类就会有很多, 每一次都要增加一个类.   2. 每增加一个类都要修改工厂类....策略模式定义了一系列算法的方法, 从概念上来看, 这些算法完成的都是相同的工作, 只是实现不同,他可以以相同的方式调用算法, 减少了各种算法类与使用算法类之间的耦合。 2.

1.3K41

又一巨头从Java迁移到Kotlin:关键应用全部开始切换、安卓代码库超过千万行Kotlin代码

所有 Kotlin 工具都需要考虑 Kotlin Java 的互操作性,这使得它们的实现变得复杂。 但 Meta 最大的担忧还是构建时间。...根据 Strulovich 的说法,如果是只使用 Kotlin 来编写新代码,继续保留大部分现有 Java 代码的话,工作量明显更低,但相应的也有两个缺点:首先就是要在 Kotlin Java 代码之间实现互操作性...例如,代码审查 wiki 工具无法对 Kotlin 语法进行高亮显示。“我们还更新了之前使用的 Pygments 库,确保其体验与处理 Java 代码时一致。...而在 Kotlin 这边,团队还没有找到能够解析类型的好办法,所以选择使用 Kotlin 编译器 API。...Strulovich 说,Meta 向 Kotlin 的迁移仍在进行中并在加速。“Kotlin 仍然缺乏一些我们使用 Java 时已经习惯了的工具优化,但我们正在努力缩小这些差距。

66530

2020 , 10 大受欢迎的全球顶级编程语言与薪资水平

以下就是,企业软件开发项目时,优先选择使用的一些编程语言: JavaScript Python Java Go Elixir Ruby Kotlin TypeScript Scala Clojure...这一下降可能归因于Python作为替代产品的广泛使用以及Python与Java之间的激烈竞争。 4、C 有数据显示,美国,C语言的程序员,平均工资为每年104,905美元。...GitHub最活跃的顶级编程语言列表中,Ruby全年保持第12位。 Ruby编程语言2019年1月至4月之间一直保持其流行高峰。但是,自5月以来,它开始下降,到12月,用户兴趣下降到57分。...这可能是由于 2019年,Google宣布Kotlin被用作Android应用开发的主要语言所致。 9、TypeScript 使用TypeScript进行开发的程序员,他的全球平均薪资:6万美元。...我们有一些顶级的编程语言,例如JavaJavaScript,它们在此类列表中几乎占据永恒的位置。然后出现了像Kotlin这样的语言,它们以惊人的速度崛起,并成为迄今为止最受欢迎的编程语言之一。

62540

Android Studio 4.0 正式版发布

image.png 并排显示使得分析更加轻松,您现在可以 Thread Activity 时间轴中查看所有线程活动 (包括方法、函数事件),以及使用新加入的导航快捷键在数据间移动——如使用 W/A/...,并支持动态功能模块之间创造功能对功能的依赖性。...Java 8 语言库 D8 R8 中的字节码转换 (desugaring) 上一个版本的 Android Gradle 插件通过字节码转换操作,在所有 API 等级中支持了大量 Java 8 的语言功能...这些数据会被压缩,通过 Google Play 的签名密钥进行加密,并存储发布的应用的签名模块中。...Java 8 语言支持更新: Java 8 API 现在均可使用,与应用最低 API 等级无关 功能对功能的依赖性: 定义两个动态功能模块之间的依赖 buildFeatures DSL: 逐个启用/禁用构建功能

3.4K31

2020 年 10 大受欢迎的全球顶级编程语言与薪资水平

以下就是,企业软件开发项目时,优先选择使用的一些编程语言: JavaScript Python Java Go Elixir Ruby Kotlin TypeScript Scala Clojure...这一下降可能归因于Python作为替代产品的广泛使用以及Python与Java之间的激烈竞争。 4、C 有数据显示,美国,C语言的程序员,平均工资为每年104,905美元。...GitHub最活跃的顶级编程语言列表中,Ruby全年保持第12位。 Ruby编程语言2019年1月至4月之间一直保持其流行高峰。但是,自5月以来,它开始下降,到12月,用户兴趣下降到57分。...这可能是由于 2019年,Google宣布Kotlin被用作Android应用开发的主要语言所致。 9、TypeScript 使用TypeScript进行开发的程序员,他的全球平均薪资:6万美元。...我们有一些顶级的编程语言,例如JavaJavaScript,它们在此类列表中几乎占据永恒的位置。然后出现了像Kotlin这样的语言,它们以惊人的速度崛起,并成为迄今为止最受欢迎的编程语言之一。

51010
领券