结构型模式
结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

让接口不兼容的对象能够相互合作。

可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。

你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。

允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。

能为程序库、 框架或其他复杂类提供一个简单的接口。

摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。

让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。