Facade

godo·2022년 8월 18일
0

Swift - Design Patterns

목록 보기
9/24

complexity, presentation, usability 의 밸런싱을 위해서 나옴
크고 정교한 코드에서 좀더 이해하고 알기 쉬운 user interface 를 위해서 제공되는 것

Facade

class Buffer
{
    var width, height: Int
    var buffer: [Character]
    
    init(_ width: Int, _ height: Int)
    {
        self.width = width
        self.height = height
        buffer = [Character](repeating: " ", count: width*height)
    }
    
    subscript(_ index: Int) -> Character
    {
        return buffer[index]
    }
}

class Viewport
{
    var buffer: Buffer
    var offset = 0
    
    init(_ buffer: Buffer)
    {
        self.buffer = buffer
    }
    
    func getCharacterAt(_ index: Int) -> Character
    {
        return buffer[offset+index]
    }
}

class Console
{
    var buffers = [Buffer]()
    var viewports = [Viewport]()
    var offset = 0
    
    init()
    {
        let b = Buffer(30, 20)
        let v = Viewport(b)
        buffers.append(b)
        viewports.append(v)
    }
    
    func getCharacterAt(_ index: Int) -> Character
    {
        return viewports[0].getCharacterAt(index)
    }
}

func main()
{
    
    let c = Console()
    let u = c.getCharacterAt(1)
 
}

정리

유저가 필요할 때 상향식으로 더 복잡한 API 를 허용할 수 있도록 할 수 있다

profile
☀️☀️☀️

0개의 댓글