Golang桥接模式讲解和代码示例

2023-12-05 0 206
目录
  • 概念示例
  • computer.go: 抽象
  • mac.go: 精确抽象
  • windows.go: 精确抽象
  • printer.go: 实施
  • epson.go: 具体实施
  • hp.go: 具体实施
  • main.go: 客户端代码
  • output.txt: 执行结果

层次结构中的第一层 (通常称为抽象部分) 将包含对第二层 (实现部分) 对象的引用。 抽象部分将能将一些 (有时是绝大部分) 对自己的调用委派给实现部分的对象。 所有的实现部分都有一个通用接口, 因此它们能在抽象部分内部相互替换。

概念示例

假设你有两台电脑: 一台 Mac 和一台 Windows。 还有两台打印机: 爱普生和惠普。 这两台电脑和打印机可能会任意组合使用。 客户端不应去担心如何将打印机连接至计算机的细节问题。

如果引入新的打印机, 我们也不会希望代码量成倍增长。 所以, 我们创建了两个层次结构, 而不是 2×2 组合的四个结构体:

  • 抽象层: 代表计算机
  • 实施层: 代表打印机

这两个层次可通过桥接进行沟通, 其中抽象层 (计算机) 包含对于实施层 (打印机) 的引用。 抽象层和实施层均可独立开发, 不会相互影响。

computer.go: 抽象

package main
type Computer interface {
Print()
SetPrinter(Printer)
}

mac.go: 精确抽象

package main
import \”fmt\”
type Mac struct {
printer Printer
}
func (m *Mac) Print() {
fmt.Println(\”Print request for mac\”)
m.printer.PrintFile()
}
func (m *Mac) SetPrinter(p Printer) {
m.printer = p
}

windows.go: 精确抽象

package main
import \”fmt\”
type Windows struct {
printer Printer
}
func (w *Windows) Print() {
fmt.Println(\”Print request for windows\”)
w.printer.PrintFile()
}
func (w *Windows) SetPrinter(p Printer) {
w.printer = p
}

printer.go: 实施

package main
type Printer interface {
PrintFile()
}

epson.go: 具体实施

package main
import \”fmt\”
type Epson struct {}
func (p \\*Epson) PrintFile() {
fmt.Println(\”Printing by a EPSON Printer\”)
}

hp.go: 具体实施

package main
import \”fmt\”
type Hp struct {}
func (p *Hp) PrintFile() {
fmt.Println(\”Printing by a HP Printer\”)
}

main.go: 客户端代码

package main
import \”fmt\”
func main() {
hpPrinter := &Hp{}
epsonPrinter := &Epson{}
macComputer := &Mac{}
macComputer.SetPrinter(hpPrinter)
macComputer.Print()
fmt.Println()
macComputer.SetPrinter(epsonPrinter)
macComputer.Print()
fmt.Println()
winComputer := &Windows{}
winComputer.SetPrinter(hpPrinter)
winComputer.Print()
fmt.Println()
winComputer.SetPrinter(epsonPrinter)
winComputer.Print()
fmt.Println()
}

output.txt: 执行结果

Print request for macPrinting by a HP Printer

Print request for macPrinting by a EPSON Printer

Print request for windowsPrinting by a HP Printer

Print request for windows

以上就是Golang桥接模式讲解和代码示例的详细内容,更多关于Golang 桥接模式的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • Golang设计模式中的桥接模式详细讲解
  • GoLang桥接模式的实现示例
  • Golang设计模式之适配器模式介绍和代码示例
  • Golang设计模式之外观模式的实现
  • 教你利用Golang可选参数实现可选模式
  • Golang设计模式之组合模式讲解
  • Golang实现组合模式和装饰模式实例详解
  • Golang WorkerPool线程池并发模式示例详解

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang Golang桥接模式讲解和代码示例 https://www.u-9.cn/jiaoben/golang/101790.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务