菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2849
0

Go 实现常用设计模式(八)外观模式

原创
05/13 14:22
阅读数 1492

外观模式 (facade)

意图:
提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

关键代码:
外观层中依次调用子系统的接口

应用实例:

  1. 电脑开机时,点击开机按钮,但同时启动了CPU,内存,硬盘等
  2. 用 Java 开发我们经常使用三层结构:controller 控制器层,service 服务层,dao 数据访问层

Go实现外观模式

package facade

import "fmt"

// CPU
type CPU struct {
}

func (CPU) start() {
    fmt.Println("启动CPU。。。")
}

// 内存
type Memory struct {
}

func (Memory) start() {
    fmt.Println("启动内存管理。。。")
}

// 硬盘
type Disk struct {
}

func (Disk) start() {
    fmt.Println("启动硬盘。。。")
}

// 开机键
type StartBtn struct {
}

func (StartBtn) start() {
    cpu := &CPU{}
    cpu.start()
    memory := &Memory{}
    memory.start()
    disk := &Disk{}
    disk.start()
}

测试用例

package facade

import "testing"

func TestFacade(t *testing.T) {
    startBtn := &StartBtn{}
    startBtn.start()
}

具体代码

更详细的代码可参考:https://github.com/pibigstar/go-demo 里面包含了 Go 常用的设计模式、Go 面试易错点、简单的小项目(区块链,爬虫等)、还有各种第三方的对接(redis、sms、nsq、elsticsearch、alipay、oss...),如果对你有所帮助,请给个 Star,你的支持,是我最大的动力!

发表评论

0/200
2849 点赞
0 评论
收藏
为你推荐 换一批