Skip to content

Instantly share code, notes, and snippets.

@hngfu
Last active June 24, 2019 04:54
Show Gist options
  • Save hngfu/b6777dcc400597eca3448ee0c76e594a to your computer and use it in GitHub Desktop.
Save hngfu/b6777dcc400597eca3448ee0c76e594a to your computer and use it in GitHub Desktop.
import Foundation
//영상과 요구사항
struct Video {}
struct Requirement {}
class Youtuber {
var editor: Editor?
func editVideo() {
self.editor?.youtuber(self, videoToEdit: Video(), requirement: Requirement())
}
}
//aka. Delgate
//ex) YoutuberDelegate
protocol Editor {
func youtuber(_ youtuber: Youtuber, videoToEdit video: Video, requirement: Requirement)
}
class Hngfu: Editor {
func youtuber(_ youtuber: Youtuber, videoToEdit video: Video, requirement: Requirement) {
//뚝딱뚝딱 힙하게 편집하는 스타일 ^^
//중요한 점은
//편집을해서 영상을 업로드하든
//영상을 파기하든 뭘하든
//Editor를 채택, 준수한 객체가 정하는 거라는 거!(맡겼으니께!) - 책임
}
}
let hngfu = Hngfu()
//우노 유튜버가 흥푸 편집자를 고용함.
let unoYoutuber = Youtuber()
unoYoutuber.editor = hngfu
//두에 유튜버도 흥푸 편집자를 고용함.
let dueYoutuber = Youtuber()
dueYoutuber.editor = hngfu
//뜨레 유튜버도 흥푸를 고용.
let treYoutuber = Youtuber()
treYoutuber.editor = hngfu
class Blu: Editor {
func youtuber(_ youtuber: Youtuber, videoToEdit video: Video, requirement: Requirement) {
//B급 감성으로 편집하는 스타일(본인 허락 받음)
}
}
let blu = Blu()
//두에 유튜버가 편집 스타일을 바꾸기 위해 hngfu를 fire하고 blu를 고용함. (ㅠ.ㅠ)
dueYoutuber.editor = blu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment