๐บ๏ธ 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 ์ํธ๋ฆฌ๋ฅผ ์ฐจ๋ก๋๋ก ์กฐ์ฌํ ๋, ๊ทธ๋ฆ๊ณผ ๋ด์ฉ๋ฌผ์ ๊ฐ์ ์ข
๋ฅ๋ก ์ทจ๊ธํ๋ฉด ํธ๋ฆฌํ ์ ์์ต๋๋ค.์ด ๊ทธ๋ฆ์ ๋ด์ฉ๋ฌผ๊ณผ ๋์ผ์ ํ์ฌ ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ..
๐บ๏ธ Design Pattern
Flyweight Patternํ๋ผ์ด์จ์ดํธ ํจํด(Flyweight Pattern)์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๊ธฐ ์ํด ๋ง์ ์์ ์์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ ๋์์ธ ํจํด์
๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ด์ ์ํ์ ์ธ์ ์ํ๋ก ๋๋์ด, ๋ด์ ์ํ๋ฅผ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํฉ๋๋ค.Flyweight Pattern → ๋์ผํ ๊ฒ์ ๊ณต์ ํด์ ๋ญ๋น๋ฅผ ์์ค๋ค๋ ํน์ง์ด ์์ต๋๋ค.Flyweight๋ ํ๋ผ์ด๊ธ ์ด๋ผ๋ ์๋ฏธ๋ก, ๊ถํฌ์์ ๊ฐ์ฅ ์ฒด์ค์ด ๊ฐ๋ฒ์ด ์ฒด๊ธ์ ์๋ฏธํฉ๋๋ค.Design Pattern์์๋ Object๋ฅผ ๊ฐ๋ณ๊ฒ ํ๊ธฐ ์ํ ๊ฒ์ ์๋ฏธ์์ ์ฌ์ฉ๋ฉ๋๋ค.Object๋ ์ปดํจํฐ ๋ด๋ถ์์ ๊ฐ์์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฌด๊ฒ๋ค ๋๋ ๊ฐ๋ณ๋ค๊ณ ํํ์ ์ค์ ๋ฌด๊ฒ๊ฐ ์๋, “๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ๋”์ ์๋ฏธํ๋ ๊ฒ์
๋๋ค.๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ๊ทธ ..
๐บ๏ธ Design Pattern
Bridge Pattern๋ธ๋ฆฌ์ง ํจํด(Bridge Pattern)์ ์ํํธ์จ์ด ๋์์ธ ํจํด ์ค ํ๋๋ก, ๊ตฌํ๋ถ์ ์ถ์ํ๋ ์ธํฐํ์ด์ค(๊ธฐ๋ฅ) ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์๋ก ๋
๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๋ ํจํด์
๋๋ค.์ด ํจํด์ ๊ตฌ์กฐ ํจํด(Structural Pattern) ์ค ํ๋๋ก, ์์คํ
์ ๋ ๋ชจ๋ํํ๊ณ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.AbstractionHigh Level Layer์ดํ๋ฆฌ์ผ์ด์
์ Interface ํน์ UIImplementor์ดํ๋ฆฌ์ผ์ด์
์์ ๋์๊ฐ๋ ์ค์ ๊ตฌํ ์ฝ๋Abstraction๋ง ๋ณผ ์ ์๊ณ ์ค์ Implementor์ ์จ๊ธธ ์ ์๋ ๊ตฌ์กฐ์
๋๋ค.์ธ๋ถ์์ ๋ณด์ฌ์ง๋ ๊ฒ๊ณผ ๋ด๋ถ Implementor๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค.Bridege Pattern: Example 1Class..