Files
go-common/factory/factory.go
2025-11-30 13:43:43 +08:00

57 lines
1.4 KiB
Go

package factory
import (
"fmt"
"git.toowon.com/jimmy/go-common/config"
"git.toowon.com/jimmy/go-common/email"
"git.toowon.com/jimmy/go-common/logger"
"git.toowon.com/jimmy/go-common/sms"
)
// Factory 工厂类,用于从配置创建各种客户端对象
type Factory struct {
cfg *config.Config
}
// NewFactory 创建工厂实例
func NewFactory(cfg *config.Config) *Factory {
return &Factory{
cfg: cfg,
}
}
// GetEmailClient 获取邮件客户端(已初始化)
// 返回已初始化的邮件客户端对象,可直接使用
func (f *Factory) GetEmailClient() (*email.Email, error) {
if f.cfg.Email == nil {
return nil, fmt.Errorf("email config is nil")
}
return email.NewEmail(f.cfg.Email)
}
// GetSMSClient 获取短信客户端(已初始化)
// 返回已初始化的短信客户端对象,可直接使用
func (f *Factory) GetSMSClient() (*sms.SMS, error) {
if f.cfg.SMS == nil {
return nil, fmt.Errorf("SMS config is nil")
}
return sms.NewSMS(f.cfg.SMS)
}
// GetLogger 获取日志记录器(已初始化)
// 返回已初始化的日志记录器对象,可直接使用
func (f *Factory) GetLogger() (*logger.Logger, error) {
if f.cfg.Logger == nil {
// 如果没有配置,使用默认配置创建
return logger.NewLogger(nil)
}
return logger.NewLogger(f.cfg.Logger)
}
// GetConfig 获取配置对象
func (f *Factory) GetConfig() *config.Config {
return f.cfg
}