3115
7 mins 设计模式总目录请参考:设计模式所支持的设计的可变方面。
适配器 (Adapter)
意图
将一个类的接口转换成客户希望的另外一个接口,使得原本不兼容的模块之间可以协同工作。
类图

相关模式
和 Bridge 桥接 有点类似,但是出发点不同:
- Bridge 的目的是将接口部分和实现部分分离,从而可以对它们较为容易也相对独立地加以改变。
- Adapter 意味着改变一个已有对象的接口。
Decorator 装饰器 在不改变接口的情况下,增强了其他对象的功能,因此 Decorator 对应用程序的透明性比较好,而且可以支持递归组合。
8597
18 mins 前言
本文是笔者对软件设计原则、设计模式的一个梳理,很多内容参考自《设计模式:可复用面向对象软件的基础》一书(尤其是设计模式部分)。其中也包含了笔者个人的一些思考和总结。
概念和术语
本章整理了一些容易混淆的概念和术语。
对象间关系
先用一张 UML 图来直观展示一下:
1018
3 mins 同步调用
IBinder
接口相关的关键 API 主要有两个:
IBinder.transact()
- 用来向一个
IBinder
对象发起调用请求。 Binder.onTransact()
- 用于处理
Binder
对象收到的调用。
请注意,这套 transaction API 是一套 同步 API, 即一个 transact()
调用会一直阻塞,直到对面的 Binder.onTransact()
方法返回之后, transact()
调用才会返回。
1740
4 mins 今天读了一篇讲 dynamic binding 和 lexical binding 的文章: Dynamic Binding Vs
Lexical Binding,讲的挺清楚的,这里大致翻译如下。
绑定 binding 的概念
绑定是名字和值的一种对应关系。在 Lisp 中,可以用 let
来创建绑定:
1
2
| (let ((a 1)) (print a))
;; ==> 1
|
这里将 name a
绑定到 value 1
上。
716
2 mins Bash 在执行脚本的时候,会创建一个新的 shell, 每个 shell 都有自己独立的执行环境,这个环境会有一些默认行为,而这些默认行为可以通过 set
命令来修改。
这里介绍几种常用的 set
命令。
注: set
命令在不带参数执行时,会显示当前 shell 的所有环境变量、函数。