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