适配器模式
适配器模式(Adapter Pattern) 就是作为两个不兼容接口之间的桥梁. 设计属于结构模式.
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
优点 和 缺点
优点:
- 提高类的使用率
- 增加了透明度
- 将没有关系的类联合起来
缺点:
- 过多使用适配器会让代码变得复杂
1 | type MusicPlayer interface { |
适配器模式(Adapter Pattern) 就是作为两个不兼容接口之间的桥梁. 设计属于结构模式.
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
优点:
缺点:
1 | type MusicPlayer interface { |
装饰器模式(Decorator pattern) 允许像一个现有对象添加新的功能, 同时又不会改变结构.
优点:
缺点:
1 | type Shape interface { |
桥接模式(Bridge Pattern): 将抽象部分和现实分离, 使他们可以独立变化. 它是一种对象结构模式,
又称为柄体(Handle and Body)模式或接口(Interface)模式。
主要解决:主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;
由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
优点:
缺点:
1 | type AbstractMessage interface { |
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
原型模式通过克隆一个已经存在的对象实例来返回新的实例,而不是通过new去创建对象,多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;
优点:
1、性能提高。
2、逃避构造函数的约束。
缺点:
1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,
特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。
2、必须实现 Cloneable 接口。
1 | type Example struct { |
代理模式(Proxy Pattern): 给某一个对象提供一个代理, 并有代理对象控制原来对象的引用.
代理模式能够协调调用者和被调用者, 在一定程度上降低系统的耦合度.
1 |
|
将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。
适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
应用案例:
1 | type targetInterface interface { |
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
单例模式的主要使用场景有以下两个方面:
1 | type singleton map[string]string |
享元模式(Flyweight Pattern): 主要是减少创建对象的数量, 以减少内存占用和提升性能.
何时使用:系统中有大量对象,这些对象消耗大量内存,这些对象的状态大部分可以外部化。
优点: 大大减少对象的创建,降低系统的内存,使效率提高。
缺点: 外部状态具有固有化的性质, 提高了系统的复杂度, 需要分离出外部和内部状态.
1 | type Employee interface { |
外观模式(Facade Pattern): 隐藏系统的复杂, 提供一个统一的接口, 用来访问子系统的一群接口.
这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
优点:
缺点:
1 | type Shape interface { |