๐บ๏ธ Design Pattern
Templete Method Patternํ
ํ๋ฆฟ ๋ฉ์๋ ํจํด(Template Method Pattern)์ ์์ ํด๋์ค์์ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ํ์ ํด๋์ค์์ ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๋จ๊ณ๋ฅผ ๊ตฌํํ๋ ๋์์ธ ํจํด์
๋๋ค.์ด ํจํด์ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ ๋ณ๊ฒฝํ์ง ์๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๋จ๊ณ๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค. ํ
ํ๋ฆฟ์ด๋, ์ฌ์ ์ ์๋ฏธ๋ก๋ ํํ์ด๋ผ๊ณ ํฉ๋๋ค.๋ฌธ์, ๋ํ์ผ๋ก ๊ตฌ๋ฉ์ด ๋ซ๋ ค ์๋ ์์ ํ๋ผ์คํฑ ํ์ ์๊ฐํด๋ณผ ์ ์์ต๋๋ค.์ค์ ๋ก ์ด๋ค ๋ํ์ด ๊ทธ๋ ค์ง์ง๋ ํ๊ธฐ๊ตฌ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.ํ์ผ๋ก ๊ทธ๋ฆฌ๋ฉด ํ์ผ๋ก ๊ทธ๋ฆฐ ๋ํ์ด ๋๊ณ , ์ฐํ๋ก ๊ทธ๋ฆฌ๋ฉด ์ฐํ๋ก ๊ทธ๋ฆฐ ๋ํ์ด ๋ฉ๋๋ค. Template Method ํจํด์ ํ
ํ๋ฆฟ ๊ธฐ๋ฅ์ ๊ฐ์ง ํจํด์
๋๋ค.์์ ํด๋์ค ์ชฝ์ ํ
ํ๋ฆฟ ๋ฉ์๋๊ฐ ์ ์๋์ด ์๊ณ , ๊ทธ ๋ฉ์๋ ..
๐บ๏ธ Design Pattern
State Pattern์ํ ํจํด(State Pattern)์ ๊ฐ์ฒด๊ฐ ๋ด๋ถ ์ํ์ ๋ฐ๋ผ ํ๋์ ๋ค๋ฅด๊ฒ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋์์ธ ํจํด์
๋๋ค.๊ฐ์ฒด๋ ์ํ๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ํ๋์ด ๋ฐ๋๋๋ค.์ํ ํจํด์ ์ฌ์ฉํ๋ฉด ์กฐ๊ฑด๋ฌธ์ ๋ง์ด ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.State๋ ์ํ = ์ฌ๋ฌผ์ ๋ชจ์์ด๋ ํํธ์ ์๋ฏธํฉ๋๋ค.๋ํ ์ํ๋ฅผ ํด๋์ค๋ก ํํํ๋ฉด ํด๋์ค๋ฅผ ๊ต์ฒดํด์ '์ํ์ ๋ณํ'๋ฅผ ํํํ ์ ์์ต๋๋ค.Strategy Pattern๊ณผ ์กฐ๊ธ ์ ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ Object์ ์ํ๊ฐ ์๋ค๋ฉด ์ฌ์ฉํ ์ ์๋ Pattern ์
๋๋ค. ์ํ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฅ ๋ํ์ ์ธ ์๊ฐ ์ ํธ๋ฑ ์
๋๋ค.๋
น์, ๋นจ๊ฐ์ ์ค ํ๋์ ์ํ๋ง ๊ฐ์ง๋ ๊ธฐ๊ณ์ด๋ฉฐ, ๊ณ์ํด์ ์ํ๊ฐ ๋ณํ๋ฉ๋๋ค.State Pattern์ ์ฌ..
๐บ๏ธ Design Pattern
Mediator PatternMediator ํจํด์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์์ ๊ฐ์ฒด๋ค ๊ฐ์ ์ํธ์์ฉ์ ์ค์ฌํ๋ ์ค์ฌ์(Mediator) ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ค์ด ์ง์ ์ ์ผ๋ก ์๋ก ์ฐธ์กฐํ์ง ์๊ณ ํต์ ํ๋๋ก ๋ง๋๋ ํจํด์
๋๋ค.์ด๋ฅผ ํตํด ๊ฐ์ฒด๋ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ์ํธ์์ฉ์ ํ ๊ณณ์ ์ง์ค์์ผ์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์
๋๋ค.๋ํ ๊ฐ์ฒด๊ฐ์ ๋ณต์กํ ์ํธ์์ฉ์ ์ค์ ์ง์คํํ์ฌ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ์ํฉ์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.์ด๋ฅผ ํตํด์ ๊ฐ์ฒด๋ค์ด ์ง์ ํต์ ํ๋ ๋์ Mediator๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ํต์ ํ๋๋ก ํ์ฌ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ฝ๋์ ์ ์ง ๋ณด์์ฑ์ ๋์
๋๋ค. Mediator๋ ์ค๊ฐ์ธ, ๊ฐ ํ์๋ค์ colleage ์
๋๋ค.Diagram of Mediator PatternMediator๋ ์ค๊ฐ์ธ, ๊ฐ ํ์๋ค์ colleage ์
..
๐บ๏ธ Design Pattern
Visitor PatternVisitor Pattern์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ ํจํด์
๋๋ค.๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ๋ง์ ์์๊ฐ ์ ์ฅ๋์ด ์๊ณ , ๊ทธ ๊ฐ ์์์ ๋ฐํ์ฌ ๋ฌด์์ธ๊ฐ ์ฒ๋ฆฌํด ๋๊ฐ๋ค๊ณ ํ ๋, ์ด๋ ๊ทธ ์ฒ๋ฆฌ์ ์ฝ๋๋ ์ด๋์ ์จ์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋ฉ๋๋ค.์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ๋ฉด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ํ๊ณ ์๋ ํด๋์ค ์์ ๊ธฐ์ ํด์ผ ํฉ๋๋ค.ํ์ง๋ง, ๋ง์ฝ ๊ทธ ์ฒ๋ฆฌ๊ฐ ์ฌ๋ฌ ์ข
๋ฅ๋ผ๋ฉด ์๋ก์ด ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋๋ง๋ค ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํด๋์ค๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.์์๋ค์ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ์์
์ ์ถ๊ฐํ ์ ์๊ฒ ํด์ฃผ๋ ๋์์ธ ํจํด์
๋๋ค.๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์๋ก์ด ์์
์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ํฉ๋๋ค.Visitor ํจํด์ ๊ฐ์ฒด์ ๊ตฌ์กฐ๊ฐ ์์ ์ ์ด์ง๋ง ๊ฐ์ฒด์ ์ํํ ์์
์ ์์ฃผ ๋ฐ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด ์ ์ฉํฉ๋๋ค.๊ฐ..
๐บ๏ธ Design Pattern
Observer PatternObserver๋ ๊ด์ฐฐํ๋ ์ฌ๋์ ์๋ฏธ์
๋๋ค.Observer ํจํด์์๋ ๊ด์ฐฐ ๋์(Subject)์ ์ํ๊ฐ ๋ณํํ๋ฉด ๊ด์ฐฐ์(Observer)์๊ฒ ์๋ ค์ค๋๋ค.Obsever ํจํด์ ์ํ ๋ณํ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ์ ํ ๋ ํจ๊ณผ์ ์
๋๋ค.์ด๋ ํ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ์ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ฐ์์๋ค์ด ๋ฐ๋ก ๋ฐ์ํ ์ ์๋ Pattern ์
๋๋ค.-> Subscriber, Listener Pattern Observer Pattern์ด ์๋ ๊ฒฝ์ฐ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ๋์ง ํ์ธํ๊ธฐ ์ํด 1์ด, 1๋ถ, 1์๊ฐ๋ง๋ค ํ์ธ์ ํด์ผํฉ๋๋ค.์ด๋ฌํ ๋ฐฉ๋ฒ์ polling ์ด๋ผ๊ณ ํ์ฌ ํ์ ์๋ ๋ฆฌ์์ค ๋ญ๋น๊ฐ ์๊น๋๋ค.Polling ์ฃผ๊ธฐ๊ฐ 1์๊ฐ์ผ ๊ฒฝ์ฐ, 1์๊ฐ ์ด๋ด์ ์ด๋ฒคํธ ์ผ์ด๋๋ค๊ฐ ์ฌ๋ผ์ง๋ค๋ฉด ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ๋์ง ์ ์ ..
๐บ๏ธ Design Pattern
Memento PatternMemento ํจํด์ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ ์ ์๊ฒ ํ๋ ๋์์ธ ํจํด์
๋๋ค.์ด ํจํด์ ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์บก์ํํ์ฌ ์ธ๋ถ์ ๋
ธ์ถ์ํค์ง ์๊ณ ๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณต์ํ ์ ์๊ฒ ํด์ค๋๋ค.์ผ๋ฐ์ ์ผ๋ก ์ด๋ค Object์ ํ์คํ ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ถ์ ๋ ์ ์ฉํ ํจํด์
๋๋ค. → ๊ฒ์์์ Saveํ๋ ๊ฒ์ ๋ ์ฌ๋ฆฌ๋ฉด ๋ฉ๋๋ค.๊ฐ๋ น ํ
์คํธ ์๋ํฐ ์ฌ์ฉํ ๋ undo์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ญ์ ํ๊ธฐ ์ ์ํ๋ก ํ
์คํธ ๋ณต์์ด ๊ฐ๋ฅํ๊ณ , ๊ทธ ๊ธฐ๋ฅ์ ๋ช ๋จ๊ณ๋ก ์คํํด์ ํธ์ง์์
์ ์ ์ ๊ณผ๊ฑฐ๋ก ๋๋ฆฌ๋ ๊ฒ๋ ๊ฐ๋ฅํจ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋จ์์ undo๊ธฐ๋ฅ์ ์คํํ๋ ค๋ฉด ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ์ ์ฅํด ๋ ํ์๊ฐ ์์ต๋๋ค.๋จ, ์ ์ฅ๋ง ํด์๋ ์๋๊ณ , ์ ์ฅํ ์ ๋ณด๋ก๋ถํฐ ์ธ์คํด์ค๋ฅผ ์๋๋๋ก ๋๋๋ฆด ์ ์..
๐บ๏ธ Design Pattern
Chain of Responsibility PatternChain of Responsibility Pattern์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐํ๋ฅผ ์ฌ๋ฌ ๊ฐ์ฒด๋ค์๊ฒ ๋ถ์ฌํจ์ผ๋ก์จ ๊ทธ๋ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์์ ์ฃผ๋ ํจํด์
๋๋ค.๋ณต์์ Object๋ฅผ ์ฌ์ฌ์ฒ๋ผ ์ฐ๊ฒฐํด์ฃผ๋ฉด, ๊ทธ ์ค๋ธ์ ํธ์ ์ฌ์ฌ์ ์ฐจ๋ ๋๋ก ๋์๋ค๋๋ฉด์ ๋ชฉ์ ํ Object๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.responsibility ๊ฐ๋
์ ๊ฐ๋ ๋ชจ๋๋ค์ ์ฒด์ธ์ ๋ง๋๋ Pattern ์
๋๋ค.chain of responsibility pattern์ด ์๋ ๊ฒฐ์ ์์ ํด๋ผ์ด์ธํธ ์ฝ๋์์ ๊ฒฐ์ ์์ฒญ์ ๋ฐํ ํฉ๋๋ค.๊ฒฐ์ ์์ฒญ ์์๋ ๊ฒฐ์ ๋ฐฉ๋ฒ๊ณผ ๊ธ์ก์ด ์กด์ฌํฉ๋๋ค.๊ฒฐ์ ๋ฐฉ๋ฒ์๋ cash, credit card, debit card ๋ฑ์ด ์์ต๋๋ค.๊ฒฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํจ์๋ ํด๋์ค๊ฐ ์์ด..
๐บ๏ธ Design Pattern
Command Pattern์ปค๋งจ๋ ํจํด์ ์์ฒญ์ ๋
๋ฆฝ๋ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ์์ฒญ์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ฒ ๋ง๋๋ ํ๋ ํจํด์
๋๋ค.๋ค์ํ ์์ฒญ์ ๋ฉ์๋๋ก ๋งค๊ฐ๋ณ์ํํ๊ณ , ์์ฒญ์ ์คํ์ ์ง์ฐํ๊ฑฐ๋ ํ์ ๋ฃ์ ์ ์์ผ๋ฉฐ, ์คํ ์ทจ์ ๊ธฐ๋ฅ์ ์ง์ํ ์ ์์ต๋๋ค.์ฌ๋ฌ ๋ช
๋ น๋ค์ ์ถ์ํํด์ class๋ก ์ ์ํ๊ณ Object๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๋ Pattern์
๋๋ค.๋ํ ํ์(Behavior) ํจํด์ ์ํฉ๋๋ค.ํด๋์ค๊ฐ ์ผ์ ์คํํ ๋, ์์ ์ ํด๋์ค or ๋ค๋ฅธ ํด๋์ค์ Method๋ฅผ ํธ์ถํฉ๋๋ค.๊ทธ๋ฌ๋ Method๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ Object์ ๋ฐ์๋์ง๋ง, ์ผ์ ์ด๋ ฅ์ ์ด๋์๋ ๋จ์ง ์์ต๋๋ค.์ด๋, ‘์ด ์ผ์ ์คํํ์์ค’ ๋ผ๋ ‘๋ช
๋ น’์ ํํํ๋ ํด๋์ค๊ฐ ์์ผ๋ฉด ํธํฉ๋๋ค.๋ช
๋ น์ ๋ํ๋ด๋ ํด๋์ค์ ์ธ์คํด์ค๋ก ํ๋์ ‘๋ฌผ๊ฑด’์ฒ..
๐บ๏ธ Design Pattern
Strategy Pattern์คํธ๋ํฐ์ง ํจํด(Strategy Pattern)์ ํ์ ํจํด(Behavioral Pattern)์ ์ผ์ข
์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ ๊ตฐ์ ์ ์ํ๊ณ , ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ๋ฉฐ, ์ด๋ค์ ์ํธ ๊ตํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ํจํด์
๋๋ค.์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ํด๋ผ์ด์ธํธ์์ ๋ถ๋ฆฌํ์ฌ ๋
๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๊ฒ ํฉ๋๋ค.์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ ์ฝ๋์ ๋ณ๊ฒฝ ์์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ต๋๋ค.Runtime ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๊ฒ ํฉ๋๋ค.ํ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ Implementing ํ๋ ๋์ ์ด๋ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ง Runtime Instruction์ ๋ฐ์ต๋๋ค.Animal์ ๋ฐ์์ Speaking์ ์ํค๋ ํจ์๋๋ฌผ์ ๊ณ ์์ด ํน์ ์ฌ์๊ณ ์์ด๊ฐ ๋ค์ด์ค๋ฉด “meow”์ฌ์๊ฐ ๋ค์ด์ค๋ฉด “roar”ํจ์๋ ์ด ์ํ๋ก ๊ณ ์ ์ด..
๐บ๏ธ Design Pattern
Composite Pattern์ปดํฌ์งํธ ํจํด(Composite Pattern)์ ๊ฐ์ฒด๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ์ฌ ๋ถ๋ถ-์ ์ฒด ๊ณ์ธต์ ๊ตฌํํ๋ ํจํด์
๋๋ค.์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๊ฐ ๋จ์ผ ๊ฐ์ฒด์ ๋ณตํฉ ๊ฐ์ฒด๋ฅผ ๋์ผํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.์ปดํฌ์งํธ ํจํด์ ๊ตฌ์กฐ ํจํด(Structural Pattern)์ ์ผ์ข
์ผ๋ก, ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ํ๋์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃฐ ์ ์๊ฒ ํฉ๋๋ค.์ปดํจํฐ์ ํ์ผ ์์คํ
์์๋ Directory ๋ผ๋ ๊ฒ์ด ์๊ณ , Directory์์๋ ํ์ผ์ด๋ ๋ค๋ฅธ ํ์ Directory๊ฐ ์๊ธฐ๋ ํฉ๋๋ค.๋ง์น “์์ ์์ ์์” ๊ฐ์ ๊ตฌ์กฐ, ์ฆ ์ฌ๊ท์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.Directory ์ํธ๋ฆฌ๋ฅผ ์ฐจ๋ก๋๋ก ์กฐ์ฌํ ๋, ๊ทธ๋ฆ๊ณผ ๋ด์ฉ๋ฌผ์ ๊ฐ์ ์ข
๋ฅ๋ก ์ทจ๊ธํ๋ฉด ํธ๋ฆฌํ ์ ์์ต๋๋ค.์ด ๊ทธ๋ฆ์ ๋ด์ฉ๋ฌผ๊ณผ ๋์ผ์ ํ์ฌ ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ..