引言 虚表是 C++ 中一个十分重要的概念,面向对象编程的多态性在 C++ 中的实现全靠虚表来实现。在聊虚表之前我们先回顾一下什么事多态性。 多态实际上就是让一个父类指针,通过赋予子类对象的地址,可以呈现出多种形态和功能…
找女朋友之简单工厂模式,工厂模式,抽象工厂模式
本文GitHub地址 一, 简单工厂模式: 突然有一天,在梦里拥有了阿拉丁神灯. 灯神说: “我可以给你创造一个女朋友哦” 这时候我的心里…嘿嘿嘿… “但是只能…
读源码 - 用设计模式解析 RecyclerView
前言 读源码常常陷入繁复的细节中,结果看了半天,感觉自己懂了点什么,又好像什么也没弄懂。所以要带着目的性去看源码,理清主干部分的思路。本文的目的是梳理源码中RecyclerView怎么根据数据源的变更,让Item更新UI…
老司机来教你单例的正确姿势
Java单例模式可能是最简单也是最常用的设计模式,一个完美的单例需要做到哪些事呢? 单例(这不是废话吗) 延迟加载 线程安全 没有性能问题 防止序列化产生新对象 防止反射攻击 可以看到,真正要实现一个完美的单例是很复杂的…
从 Android 代码中来记忆 23 种设计模式
我的简书同步发布:从Android代码中来记忆23种设计模式 相信大家都曾经下定决心把23种设计模式牢记于心,每次看完之后过一段时间又忘记了~,又得回去看,脑子里唯一依稀记得的是少数设计模式的大致的定义。其实,网上很多文…
Swift 中实现 Promise 模式
在异步编程中,除了竟态处理、资源利用以外,另外一个难点就是流程管理。在拥有匿名函数、闭包这些特性的编程语言中,我们通常可以使用回调函数来做一个异步任务完成或失败时的处理。但当我们的业务逻辑逐渐复杂时,就会产生回调嵌套,整…
浅谈 Swift 的函数式编程
Swift 在设计上非常注重函数式思想的渗透,这使得我们在日常开发中又有了一个新的方向可以选择。很多人可能不太了解函数式,其实我之前也并没有怎么接触过函数式编程,所以本文也就是漫谈一下函数式给我们带来的便利,有错误的地方…
php 设计模式 - 迭代器模式
迭代器模式概念 在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示。 适用场景 访问一个聚合对象的内容而无需暴露它的内部表示 支持对聚合对象的多种遍历 为遍历不同的聚合结构提供一个统一的接…
php 设计模式 - 代理模式
代理模式定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 主要角色 抽象角色:通过接口或抽象类声明真实角色实现…
php 设计模式 - 装饰器模式
装饰器模式概念 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能,它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰器模式特点 1.装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相…
php 设计模式 - 原型模式
原型模式概念 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 使用场景它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口…
学习设计模式前需要知道的事情
为什么要学习设计模式? 做事情之前问个为什么总是好的。关于设计模式的好坏,我在知乎上也看过一些讨论,有知友对其提出过一些疑问,里面有一些关于设计模式的观点: 设计模式有何不妥,所谓的荼毒体现在哪? 设计模式是不是有点太玄…