Golang

Golang 设计模式

严格来说 Go 并不特别适用 Java 的设计模式。但是我们主要目的是掌握方法以降低耦合、提高复用性。 单例模式 一句话总结:利用包域变量保存实例,利用 once.Do 保证线程安全。原理是互斥锁。 输入:空 输出:全局唯一的单例 1var once sync.Once 2 3 4var dbConn *DB 5 6func GetConnection() *DB { 7 if dbConn == nil { 8 once.Do( 9 func() { 10 dbConn = NewConnection() 11 } 12 ) 13 } 14 return dbConn 15} 抽象工厂模式 简单工厂模式 其实就是判断参数后区别创建对象,你可以视其为一个对象类选择器。里面往往是一堆条件语句。 输入:简单的参数 输出:复杂的对象。且返回的任何对象都属于同一接口。 1var plugins []IPlugin 2 3const userType = { 4 AdminType 5 MemberType 6} 7func main() { 8 var user IUser = NewUser(userType) 9} 10 11func NewUser(t userType) IUser { 12 switch t { 13 case AdminType: 14 return &Admin{} 15 } 16 case MemberType: 17 return &Member{} 18 // . Read more...
1 of 1