go 设计模式代码实现
单例模式
-
代码实现
type singleton struct{} var ins *singleton var once sync.Once func GetIns() *singleton { once.Do(func(){ ins = &singleton{} }) return ins }
适配器模式
-
代码实现
//目标接口 type Targeter interface { NewPrint() } //需要转换的接口 type Adapteer interface { Print() } //需要转换的接口的实现 type AdapteeTpl struct { } func (AdapteeTpl) Print() { fmt.Println("我是接口(Adapteer)的实现类的实现方法") } //目标接口实现 type TargeterTpl struct { //包裹转换接口 Adapteer } //目标接口方法实现 func (t *TargeterTpl) NewPrint() { t.Print() } //转换工厂 func AdapteFatcory(a Adapteer) Targeter { return &TargeterTpl{ AdapteeTpl{}, } } //转换方法 func AdapterService() { //创建转换接口 a := AdapteeTpl{} //工厂转换 b := AdapteFatcory(a) //调用新接口方法 b.NewPrint() }
网友评论