Шаблон стратегии в основном позволяет объекту выбирать и выполнять во время выполнения, не зная, как реализовать желаемую бизнес-логику, вместо того, чтобы использовать различные типы алгоритмов, которые можно использовать для выполнения каждой операции.
Я очень часто использую этот паттерн в Go. И я думаю, что Голанг как нельзя лучше подходит для этого шаблона.
В этом примере мы создадим пакет, который сможет подключать разные типы БД. А в будущем мы сможем легко добавить новый тип подключения к БД.
Как показано ниже, я создал интерфейс «IDBConnection» и общий метод «Connect()» для всех унаследованных структур.
type IDBconnection interface {
Connect()
})
Я создал структуру SqlConnection, а для реализации в интерфейсе IDBconnect написал функцию «Connect()».
type SqlConnection struct {
connectionString string
}
func (con SqlConnection) Connect() {
fmt.Println(("Sql " + con.connectionString))
}
Как видно ниже, я сделал то же самое для OracleConnection.
type OracleConnection struct {
connectionString string
}
func (con OracleConnection) Connect() {
fmt.Println("Oracle " + con.connectionString)
}
Как показано ниже, структура DBConnection используется для вызова метода Connect () структуры, который реализуется из интерфейса IDBConnection.
type DBConnection struct {
db IDBconnection
}
func (con DBConnection) DBConnect() {
con.db.Connect()
}
Как показано ниже, мы создали структуру SQL и Oracle Connection. Оба они устанавливают свойство «db» структуры DBConnection. И структура DBConnection вызывает тот же метод «DBConnect()» для Oracle и SQL DB Connection.
func main() {
sqlConnection := SqlConnection{connectionString: "Connection is connected"}
con := DBConnection{db: sqlConnection}
con.DBConnect()
orcConnection := OracleConnection{connectionString: "Connection is connected"}
con2:=DBConnection{db:orcConnection}
con2.DBConnect()
}