Golang 设计模式

心已入冬 提交于 2020-02-28 07:35:17

单例模式

package main  
  
import "sync"  

var instance *Single  
var once sync.Once  

type Single struct {}  
  
func NewSingle() *Single {  
   once.Do(func() {  
      instance = new(Single)  
   })  
   return instance  
}

工厂模式

package main  
  
import (  
   "fmt"  
)  
  
type Phone interface {  
   Call()  
}  
  
type Mi struct{}  
type Iphone struct{}  
  
func (mi *Mi) Call() {  
   fmt.Println("喂...(mi)")  
}  
  
func (i *Iphone) Call() {  
   fmt.Println("喂...(iphone)")  
}  
  
type Factory struct{}  
  
func (f *Factory) Create(name string) Phone {  
   switch name {  
   case "mi":  
      return new(Mi)  
   case "iphone":  
      return new(Iphone)  
   default:  
      panic("找不到这个手机:"  + name)  
   }  
}  
  
func main() {  
   f := new(Factory)  
   p := f.Create("mi")  
   p.Call()  
  
   p = f.Create("iphone")  
   p.Call()  
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!