分类:设计模式清除筛选

Python插件化框架设计与实现

一、插件框架要回答的三个问题 一个插件框架绕不开三点: 引擎怎么知道有哪些插件 引擎怎么用统一方式驱动它们 插件之间怎么传数据 pyplugin-framework 给出的方案是: 第一个问题交给元类:插件类定义完成的瞬间,元类会把这个类写进一张全局注册表,引擎侧不需要维护任何登记代码。 第二个问题交给 PluginCore:所有插件都从它派生,引擎统一调用它们的 invoke 方法。 第三个问题

Okio框架解析:Buffer与Segment的读写设计

一、Okio 简介 Okio 把Buffer从 BufferedOutputStream ByteArray,换成了「8 KiB 定长块组成的双向环形链表 + 全局无锁块池」,于是缓冲区可以按块移动而不是按字节拷贝,落盘粒度天然对齐到块边界,块用完之后回池复用。 1.1 与 Java IO 的设计对比 java.io 中的 InputStream / OutputStream,数据的载体是 byt

Main-safe:现代 Android 架构真正的分水岭

在 Android 架构设计里,"main-safe" 经常被提到,但大多数人只把它理解成一句简单的话:"Repository 要切线程,UI 层不用关心 IO。" 如果只停留在这个理解,其实还远远没抓住它的本质。 main-safe 并不仅仅是线程规范,它的本质是一种架构契约——Data 层对调用方的承诺,也正因如此,它成了衡量架构是否真正分层的一道分水岭。 一、什么是 main-safe? m

LiveData 的缺陷:为什么我现在越来越少使用 LiveData?

我第一次接触 LiveData 的时候,觉得它非常惊艳。在那个时代,Android 开发充满了 Callback、生命周期问题、内存泄漏风险。LiveData 让 Android 开发第一次拥有了一个和生命周期结合的数据观察方案。那时候我觉得:LiveData 真的好棒,简单好用。 但是几年之后,我越来越少使用 LiveData。现在的新项目里,我基本不会主动选择 LiveData,而更多使用 K

Java轻量多线程框架设计与实现

AsyncTaskPool 是一个轻量多线程框架,其核心代码不到 400 行,同时支持三种常用设计模式。 一、整体架构:三层角色 AsyncTaskPool 只有三个核心角色: BasicTaskDispatchPool——对外的门面。通过继承实现三个抽象方法:runTask(具体任务逻辑)、getFinishedCallback(全部完成后回调)、getItemTaskCallback(单个任务