-
#14 ๋งค์ผ_๋ก๊ทธAbout Lemon/๋งค์ผ์_์ผ์ง 2020. 1. 14. 22:45
#์ํ_๋ก๊ทธ
๊ผผ๊ผผํ๊ฒ ๋์์ธ์ ์ฒดํฌํ์ง ์์์ ... ๊ทธ ๋๊ฐ๋ฅผ ํน๋ ํ๊ฒ ์น๋ฅด๊ณ ์๋คใ ์์ ๋ ์์ด๋ฌ๋ ์ ์ ์ฐจ๋ ค! ์ฐธ ์ฌ๋ฌ๋ชจ๋ก ๋ ์์ ์๊ฒ ์ค๋งํ๊ณ ์์ํ ํ๋ฃจ์๋ค... ๊ผผ๊ผผํ๊ณ ์ ๋ง ํ์ํ ๋๋ง ์์ฌ์ํต์ ํ๋ ์ฌ๋์ด ๋๊ณ ์ถ๋ค... ใ .ใ ์์ํด
#์ค๋์_๊ฐ๋ฐ
๋ฆฌํฉํ ๋ง ์ฝ๊ณ ๋ฆฌํฉํ ๋งํ๋ค. ์กฐ๊ฑด๋ฌธ์ ์ฌ์ ์๋ก ์ ํํ๋ ์์ ์ ํ๋๋ฐ, ํ๊ณ ๋๋ ํท๊ฐ๋ฆฌ๋ ๋ถ๊ธฐ๋ฌธ์ด ์ฝ ์ฌ๋ผ์ง๊ณ , ๊น๋ํ ์ํ ๋ณ ๊ฐ์ฒด๋ง ๋จ์๋ค. ์ฒ์๋ถํฐ ์ด๋ฐ ๊ตฌ์กฐ๊ฐ ์๊ฐ์ด ๋ฌ์ผ๋ฉด ์ฐธ ์ข์ ํ ๋ฐ... ์์ง ํ์ฐธ ๋ถ์กฑํ๋ค. ์ด์ ํ ๋ฒ ์ ์ฉํด๋ดค์ผ๋ ์์ง ์๊ฒ ์ง? ์์ ํ๋ด์
#์ค๋์_๋ ์
#๋ฆฌํฉํ ๋ง
์ด์ switch ๋ฌธ์ ์ ๊ฑฐํ๊ณ ๊ฐ์ฒด์งํฅ ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ ์ธ ๋คํ์ฑ์ ์ด๋ฆฌ๊ธฐ ์ํด, Type Code ( ๋ณดํต์ Enum์ผ๋ก ๊ตฌํ)์ ํด๋์ค/ํ์ํด๋์ค/์ํ๋ก ๋ณ๊ฒฝํ๋ ๋ฒ์ ๋ฐฐ์ ๋ค.
์ด์ ์ ๋ง๋ก switch๋ฅผ ์ ๊ฑฐํ ์ฐจ๋ก๋ค.
์กฐ๊ฑด๋ฌธ์ ์ฌ์ ์๋ก ์ ํ Replace Conditiaonal with Polymorphism
๋ง ๊ทธ๋๋ก if ๋ฌธ๊ณผ switch ๋ฌธ์, ๊ทธ ์กฐ๊ฑด๊ณผ switch ์ ์ฌ์ฉ๋๋ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ ์ฌ์ ์๋ก ์ ์ํด์ ๋ฐ๊พผ๋ค. ์๋๋ ์ด๋ฆฌ์ ๋ฆฌ ๋ถ๊ธฐ๋ฅผ ํ๋ ์ฝ๋๊ฐ ์ ๋ถ๋ฆฌ ๋ ํด๋์ค๋ค๊ณผ, ํด๋์ค์ ๊ณตํต ๊ธฐ๋ฅ์ ํธ์ถํ๋ ํ ์ค์ ์ฝ๋๋ก ๋ฐ๋๋ ๋งค์ง์ ๋ณผ ์ ์๋ค. ํด๋์ค๋ ๋ง์์ง์ง๋ง, ๊ฐ๋ ์ฑ์ UP!
๋ณ๊ฒฝ ์ . ์ธ์ด๋ Swift
enum Job { case engineer case designer case systemArchitector } class Person { var job : Job init(aJob: Job) { job = aJob } func selfIntroduction() { //์ง๊ธ์ ๋ช ๊ฐ ์์ด์ ๊ด์ฐฎ์ง๋ง, ๋์ค์ ๊ธฐ๋ฅ์ด ๋ง์์ง๊ฑฐ๋ ๋ณต์กํ๋ฉด ์์๋ณด๊ธฐ๊ฐ ํ๋ค์ด ์ง ๊ฒ์ด๋ค :( switch self.job { case .engineer: print("I'm an engineer") self.doEngineer() case .designer: print("I'm a designer") print("here's my portpolio") self.doDesign() case .systemArchitector: print("I'm a systemArchitector") print("Hmm... What could we do for Our Customer") self.doMakeBluePrint() } } func doEngineer() { //do somehing awesome } func doDesign() { //do somehing awesome } func doMakeBluePrint() { //do somehing awesome } } let eng1 = Person(aJob: .engineer) let des1 = Person(aJob: .designer) let sys1 = Person(aJob: .systemArchitector) eng1.selfIntroduction() des1.selfIntroduction() sys1.selfIntroduction()
๋ณ๊ฒฝ ํ
//Swift๋ ์ธํฐํ์ด์ค๋ฅผ protocol๋ก ์ ์ธํ ์ ์๋ค. protocol JobClass { func selfIntroduction() } //ํ์ผ ๋จ์๋ก ๊ตฌ๋ถ ๋์ด ์๋ ๊ฒ์ด ๊ฐ๋ ์ฑ ๋ฉด์์ ์กฐ๊ธ ๋ ์ข์ ๊ฑฐ ๊ฐ๋ค. class Engineer : JobClass { func selfIntroduction() { print("I'm an engineer") } } class Designer : JobClass { func selfIntroduction() { print("I'm a designer") print("here's my portpolio") } } //์ด์ ๋ณ๊ฒฝ์ด ์๊ฒจ๋ ๊ทธ๊ฑธ ๊ตณ์ด Person2 ํด๋์ค๊ฐ ์ ํ์๊ฐ ์๋ค. class SysmtemArchitect : JobClass { func selfIntroduction() { print("I'm a systemArchitector") print("Hmm... What could we do for Our Customer") print("WOW! Something awesome changes") } } class Person2 { var job : JobClass init(aJob: JobClass) { job = aJob } //์จ! ์งง์์ก๋ค. func selfIntroduction() { self.job.selfIntroduction() } } let eng2 = Person2(aJob: Engineer()) let des2 = Person2(aJob: Designer()) let sys2 = Person2(aJob: SysmtemArchitect())
#์ค๋์_๊ฒฝ์
์ค๋์ ์คํตํ๋ค... ์ค๊ฐ ์ค๊ฐ ๋ดค๋ ๋ด์ค์์ ๋ ๊ฐ์ง๋ง ๊ฑด์ก๋ค.
CES 2020 ๋ด์ค์์ ๋ก๋ด๊ณผ mobility
'About Lemon > ๋งค์ผ์_์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#16 ๋งค์ผ_๋ก๊ทธ (0) 2020.01.16 #15 ๋งค์ผ_๋ก๊ทธ (0) 2020.01.15 #13 ๋งค์ผ_๋ก๊ทธ (0) 2020.01.13 #11 ๋งค์ผ_๋ก๊ทธ ๊ฒธ ์ด๋ฒ์ฃผ ๋๋์๋ณด๊ธฐ (0) 2020.01.11 #10 ๋งค์ผ_๋ก๊ทธ (0) 2020.01.10