Golang设计模式之外观模式

Jackey Golang 2,141 次浏览 , , 没有评论
package main

import "fmt"

// 测试
type API interface {
    Test() string
}

type APICall struct {
    // 接口
    a AmoudleAPI
    b BmoudleAPI
}

func (api *APICall) Test() string {
    return fmt.Sprintf("%s\n%s", api.a.TestA(), api.b.TestB())
}

func NewApi() API {
    return &APICall{NewAmoudleAPI(), NewBmoudleAPI()}
}

//A测试
type AmoudleAPI interface {
    TestA() string
}

type aMoudleImpl struct{}

func (*aMoudleImpl) TestA() string {
    return "主网服务已运行"
}

func NewAmoudleAPI() AmoudleAPI {
    return &aMoudleImpl{}
}

//B测试
type BmoudleAPI interface {
    TestB() string
}

type bMoudleImpl struct{}

func (*bMoudleImpl) TestB() string {
    return "测试网服务已运行"
}

func NewBmoudleAPI() BmoudleAPI {
    return &bMoudleImpl{}
}

func main() {
    api := NewApi()
    fmt.Println(api.Test())
}

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go