设计模式整理—外观模式

2020-07-08  本文已影响0人  我就是小政政
  1. 外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
  2. 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节
    理解:体现了接口隔离原则,客户端不应该依赖它不需要的接口。对客户端与各个子系统进行解耦。合理使用外观模式可以帮助更好地划分访问层次(可用于分层设计)。或者一些大型系统难以维护、扩展时提供一个遗留系统的比较清晰简单的接口。
package facade
import "fmt"

// 原A业务模块
type A interface {
    running() string
}
type AImpl struct {}
func (A *AImpl) running() string {
    return "Module A is running"
}
func NewA() A  {
    return new(AImpl)
}

// 原B业务模块
type B interface {
    running() string
}
type BImpl struct {}
func (B *BImpl) running() string {
    return "Module B is running"
}
func NewB() B  {
    return new(BImpl)
}

// facade 接口
type Api interface {
    running() string
}
type apiImpl struct {
    a A
    b B
}
func (a *apiImpl) running() string {
    return fmt.Sprintf("%v\n%v",a.a.running(),a.b.running())
}
func NewApi() Api  {
    return &apiImpl{a: NewA(), b: NewB()}
}
上一篇 下一篇

猜你喜欢

热点阅读