模式 / 结构模式
image

# Adaptee
class StringList
    def initialize
        @rows = []
    end

    # SpecificRequest()
    def get_string
        return @rows.join("\n")
    end

    def add(value)
        @rows << value
    end
end

# Adapter
class TextAdapter
    def initialize(string_list)
        @string_list = string_list
    end

    # Request()
    def get_text
        @string_list.get_string()
    end
end

def getTextAdapter
    row_list = StringList.new
    adapter = TextAdapter.new(row_list)

    row_list.add("line 1")
    row_list.add("line 2")
    return adapter
end

# Client
adapter = getTextAdapter()
text = adapter.get_text()
# text: line 1
#       line 2

print(text)