golang设计模式之模版方法

95 阅读1分钟

使用模版方法的优点:

  1. 提供一个通用的算法框架:模版方法定义了一个算法的骨架,将算法中的一些通用步骤抽象出来,形成一个模版。这样可以避免重复编写相似的代码,提高代码的复用性。
  2. 允许子类实现具体的步骤:模版方法将一些具体的步骤延迟到子类中实现。这样可以在不改变算法结构的情况下,根据不同的需求来实现具体的步骤,实现代码的灵活性和扩展性。
  3. 控制算法的流程:模版方法定义了算法的执行流程,通过在模版方法中调用具体的步骤,可以控制算法的执行顺序和流程。这样可以确保算法的正确性和一致性。
// UserBaser 接口
type UserBaser interface {
   SetSubType()
   SetSubTitle()
}

// UserBase 用户
type UserBase struct {
   Uid           int64  `json:"uid"`            // 用户id
}

// NewUserBase 初始化
func NewUserBase(ctx context.Context, uid int64) UserBase {
   return UserBase{
      Uid:      uid
   }
}

// SetSubType 子类型。
func (u *UserBase) SetSubType() {}

// SetSubTitle 子类
func (u *UserBase) SetSubTitle() {}

// SetPrivateInfo 执行步骤
func SetPrivateInfo(u UserBaser) {
   u.SetSubType()
   u.SetSubTitle()
}