Open lzh2nix opened 3 years ago
这是一个在生活中随处可见的模式,你在TB搜以下适配器会出来各种场景下的适配器。适配器的特点就是不修改使用方和调用方的就口的前提下将整体功能给很好的跑起来。 只需要新增一个Adapter就可以了。 对应的类结构如下:
书里的举的这个例子很好,在早期的java中有一个Enumeration interface。
type Enumeratoion interface { HasMoreElements() bool NextElement() interface{} }
而在新的系统中只有Iterator interface
type Iterator interface { HasNext() bool Next() interface{} Remove() }
为了是适配两种interface我们需要定一个adapter。
type Iterator2EnumAdapter struct { enum Enumeratoion } func (adapter *Iterator2EnumAdapter) HasNext() bool { return adapter.enum.HasMoreElements() } func (adapter *Iterator2EnumAdapter) Next() interface{} { return adapter.enum.NextElement() } func (adapter *Iterator2EnumAdapter) Remove() { panic("not support") }
facade模式和适配器模式查不多, 不同点在于adapter对单个接口/对象做适配而facade是将多个对象组合之后对外提供简单的单一接口。这样使用方直接调用接口即可不用关心具体实现。
适配器模式
这是一个在生活中随处可见的模式,你在TB搜以下适配器会出来各种场景下的适配器。适配器的特点就是不修改使用方和调用方的就口的前提下将整体功能给很好的跑起来。 只需要新增一个Adapter就可以了。 对应的类结构如下:
书里的举的这个例子很好,在早期的java中有一个Enumeration interface。
而在新的系统中只有Iterator interface
为了是适配两种interface我们需要定一个adapter。
外观模式
facade模式和适配器模式查不多, 不同点在于adapter对单个接口/对象做适配而facade是将多个对象组合之后对外提供简单的单一接口。这样使用方直接调用接口即可不用关心具体实现。