GO设计模式14模板方法模式
Posted XY丶YX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO设计模式14模板方法模式相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
)
type IComputerFactory interface {
ProduceComputer() string
BuyAllUnits()
Assemble() string
}
//相当于抽象类
type ComputerFactory struct {
RealFactory IComputerFactory //包含一个真正的实现的引用
}
//在这里写“抽象类”的共同的方法,实际上调用的是具体的实现来完成的。在java中,是通过this来引用具体子类,而在此处,是通过RealFactory属性
func (factory *ComputerFactory) ProduceComputer() string {
factory.RealFactory.BuyAllUnits()
return factory.RealFactory.Assemble()
}
//相当于具体实现子类,匿名组合父类,然后重写在java中属于抽象的方法
type LenovoFactory struct {
ComputerFactory
}
func (factory *LenovoFactory) BuyAllUnits() {
fmt.Println("Lenovo 去购买了组件")
}
func (factory *LenovoFactory) Assemble() string {
return "Lenovo computer"
}
func main() {
fmt.Println("hello")
factory := new(ComputerFactory)
factory.RealFactory = new(LenovoFactory)
fmt.Println(factory.ProduceComputer())
}
以上是关于GO设计模式14模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章
模板方法设计模式详解C/Java/JS/Go/Python/TS不同语言实现