
import (
"fmt"
"strings"
)
//StringList is Adaptee
type StringList struct {
rows []string
}
func (sl StringList) getString() string {
return strings.Join(sl.rows, "\n")
}
func (sl *StringList) add(value string) {
sl.rows = append(sl.rows, value)
}
//TextAdapter is Adapter
type TextAdapter struct {
StringList
}
func (ta TextAdapter) getText() string {
return ta.getString()
}
func getTextAdapter() TextAdapter {
adapter := TextAdapter{}
adapter.add("line 1")
adapter.add("line 2")
return adapter
}
//Client
adapter := getTextAdapter()
text := adapter.getText()
//text: line 1
// line 2
fmt.Println(text)
| Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов. |