ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> # 简单工厂 * 简单工厂:有一个方法去集中实例化对象 * 方法工厂:每一个对象都有一个实例化 * [https://blog.csdn.net/weixin\_45462577/article/details/114542194](https://blog.csdn.net/weixin_45462577/article/details/114542194) ~~~ package main import "fmt" // SMSProvider 是一个短信服务提供商的接口 type SMSProvider interface { SendSMS(phoneNumber, message string) error } // TencentCloudSMS 是腾讯云短信服务提供商 type TencentCloudSMS struct { // 在这里添加腾讯云短信服务的配置 } func (t *TencentCloudSMS) SendSMS(phoneNumber, message string) error { // 实现发送短信到腾讯云的逻辑 fmt.Printf("Sending SMS to Tencent Cloud to %s: %s\n", phoneNumber, message) return nil } // AliyunSMS 是阿里云短信服务提供商 type AliyunSMS struct { // 在这里添加阿里云短信服务的配置 } func (a *AliyunSMS) SendSMS(phoneNumber, message string) error { // 实现发送短信到阿里云的逻辑 fmt.Printf("Sending SMS to Aliyun to %s: %s\n", phoneNumber, message) return nil } // SMSFactory 是短信发送工厂,根据提供商选择发送短信 type SMSFactory struct{} func (f *SMSFactory) GetSMSProvider(provider string) SMSProvider { switch provider { case "TencentCloud": return &TencentCloudSMS{} case "Aliyun": return &AliyunSMS{} default: // 这里可以添加其他第三方平台的实现 fmt.Println("Unsupported SMS provider") return nil } } func main() { factory := &SMSFactory{} // 选择短信提供商 provider := "TencentCloud" // 获取短信提供商的实例 smsProvider := factory.GetSMSProvider(provider) if smsProvider != nil { // 使用短信提供商发送短信 phoneNumber := "13711111111" message := "Hello, this is a test message." err := smsProvider.SendSMS(phoneNumber, message) if err != nil { fmt.Println("Error sending SMS:", err) } } } ~~~