设计模式:结构型 (Structural)

设计模式总目录请参考:设计模式所支持的设计的可变方面

适配器 (Adapter)

意图

将一个类的接口转换成客户希望的另外一个接口,使得原本不兼容的模块之间可以协同工作。

类图

相关模式

Bridge 桥接 有点类似,但是出发点不同:

  • Bridge 的目的是将接口部分和实现部分分离,从而可以对它们较为容易也相对独立地加以改变。
  • Adapter 意味着改变一个已有对象的接口。

Decorator 装饰器 在不改变接口的情况下,增强了其他对象的功能,因此 Decorator 对应用程序的透明性比较好,而且可以支持递归组合。

软件设计原则、设计模式总结

前言

本文是笔者对软件设计原则、设计模式的一个梳理,很多内容参考自《设计模式:可复用面向对象软件的基础》一书(尤其是设计模式部分)。其中也包含了笔者个人的一些思考和总结。

概念和术语

本章整理了一些容易混淆的概念和术语。

对象间关系

先用一张 UML 图来直观展示一下:

Android 的 Binder 机制

同步调用

IBinder 接口相关的关键 API 主要有两个:

IBinder.transact()
用来向一个 IBinder 对象发起调用请求。
Binder.onTransact()
用于处理 Binder 对象收到的调用。

请注意,这套 transaction API 是一套 同步 API, 即一个 transact() 调用会一直阻塞,直到对面的 Binder.onTransact() 方法返回之后, transact() 调用才会返回。

Bash: set 命令用法介绍

Bash 在执行脚本的时候,会创建一个新的 shell, 每个 shell 都有自己独立的执行环境,这个环境会有一些默认行为,而这些默认行为可以通过 set 命令来修改。

这里介绍几种常用的 set 命令。

注: set 命令在不带参数执行时,会显示当前 shell 的所有环境变量、函数。