์ฌ๊ธฐ์๋ ์๋ฌธ์ค Suggest Navigation ์ ๋ํด ๋ฒ์ญ & ์ ๋ฆฌ
Suggested Navigation - ํจํด ํ์ต ์์์ ๋ํด์ ¶
DesignPatterns๋ก Pattern ์คํฐ๋๋ฅผ ์ฒ์ ์์ํ ๋ ๋ณด๋ฉด, 23๊ฐ์ Pattern๋ค์ navigate ํ ๋ฐฉํฅ์ ๊ฒฐ์ ํ ๋งํ ๋๋ ทํ ๊ธฐ์ค์ด ์์์ ์ ์ ์๋ค. ์ด ์ฑ
์ Pattern๋ค์ Creational, Structural, Behavioral ๋ถ๋ฅ๋ก ๋๋์ด์ ธ ์๋ค. ์ด๋ฌํ ๋ถ๋ฅ๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฑ์ง๋ค์ Pattern๋ค์ ๋นจ๋ฆฌ ์ฐพ๋๋ฐ ๋์์ ์ฃผ๊ธด ํ์ง๋ง, ํจํด์ ๊ณต๋ถํ ๋ ๊ทธ ๊ณต๋ถ ์์์ ๋ํด์๋ ๊ตฌ์ฒด์ ์ธ ๋์์ ์ฃผ์ง ๋ชปํ๋ค.
Pattern๋ค์ ๊ฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์ฐ์ด๋ ๊ฒฝ์ฐ๋ ํ์น ์๋ค. ์๋ฅผ ๋ค๋ฉด, IteratorPattern์ ์ข
์ข
CompositePattern ๊ณผ ๊ฐ์ด ์ฐ์ด๊ณ , ObserverPattern๊ณผ MediatorPattern๋ค์ ์ ํต์ ์ธ ๊ฒฐํฉ๊ด๊ณ๋ฅผ ํ์ฑํ๋ฉฐ, SingletonPattern์ AbstractFactoryPattern์ ๊ฐ์ด ์ฐ์ธ๋ค. Pattern๋ค๋ก ๋์์ธ๊ณผ ํ๋ก๊ทธ๋๋ฐ์ ์์ํ๋ ค๊ณ ํ ๋์, ํจํด์ ์ฌ์ฉํ๋๋ฐ ์์ด์ ์ค์ ์ ์ธ ๊ธฐ์ ์ ์ด๋ป๊ฒ ๊ฐ ํจํด๋ค์ ์กฐํฉํด์ผ ํ ๊ฒ์ธ๊ฐ์ ๋ํด ์๋ ๊ฒ์์ ๋ฐ๊ฒฌํ๊ฒ ๋ ๊ฒ์ด๋ค.
DesignPatterns ์ ์ ์๋ค์ Pattern๋ค๊ฐ์ ์ฐ๊ฒฐ๊ด๊ณ๋ค์ ์ ์ํ์ง๋ง, ์ด๊ฒ์ด ๋ํ Pattern๋ค์ ๋ํ navigation์ด ๋์ง๋ ๋ชปํ๋ค. ์ฑ
์ ๋ฐ์ ๊ฑธ์ณ ๋ง์ ํจํด๋ค์ด ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ๋ํ ๊ทธ๊ฒ์ ๋ค๋ฅธ ํจํด๋ค ํ์ตํ๊ธฐ ์ด์ ์ ๊ณต๋ถํ๋๋ฐ ๋์์ ์ฃผ๊ธฐ๋ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค Pattern๋ค์ ๋ค๋ฅธ ํจํด๋ค์ ๋นํด ๋ ๋ณต์กํ๊ธฐ๋ ํ๋ค.
์ฌ๋ฌํด๊ฐ ์ง๋ ์ง๊ธ, DPSG๋ 23์ฃผ ๊ธฐ๊ฐ์ pattern๋ค์ ๊ณต๋ถํ๋ ์คํฐ๋ ๊ทธ๋ฃน๋ค์ ๊ฐ์ ธ์๋ค. ๊ฐ๊ฐ์ ๊ทธ๋ฃน๋ค์ ์คํฐ๋ ๊ทธ๋ฃน์ ์ํ navigation ์ ๋ํด ์คํํ๊ณ , ํ ๋ก ํ๊ณ , ์์ ํ๋ค. ์ฌ๊ธฐ์ ์ ์๋ navigation์ ๋งค ์๋ก์ด ์คํฐ๋ ๊ทธ๋ฃน๋ค์๊ฒ ์ด์ฉ๋๋ค. ์ฌ๊ธฐ์ ์ ์๋ navigation์ Pattern ์ด์ฌ์๋ค์๊ฒ ๋ ์งํ๋กญ๊ฒ ํ๋์ ํจํด์์ ๋ค๋ฅธ ํจํด์ผ๋ก ์ด๋ํ๊ฒ๋ ๋์์ค ๊ฒ์ด๋ฉฐ, ํจ์จ์ ์ผ๋ก 23๊ฐ์ Pattern๋ค์ ํฐ๋ํ๋๋ฐ ๋์์ ์ค ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ด navigation์ ๊ณ์ ๊ฐ์ ํด ๋๊ฐ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์ ์ํ๋ ๊ฐ์ ์ฑ
๋ํ ํ์ํ๋ค.
DesignPatterns Navigation ¶
Factory Method - Creational ¶
FactoryMethodPattern ๋ก ์์ํ๋ผ. ์ด ํจํด์ ๋ค๋ฅธ ํจํด๋ค์ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
Strategy - Behavioral ¶
StrategyPattern ๋ํ ์ฑ
์ ๋ฐ์ ๊ฑธ์ณ ๋น๋ฒํ๊ฒ ์ด์ฉ๋๋ค. ์ด ํจํด์ ๋ํด ์ผ์ฐ ์์๋ ์ผ๋ก์จ, ๋ค๋ฅธ ํจํด์ ์ดํดํ๋๋ฐ ๋์์ ์ค ๊ฒ์ด๋ค.
Decorator - Structural ¶
"skin" vs "guts" ์ ๋ํ ํ ๋ก ์ StrategyPattern ์ DecoratorPattern ๋ฅผ ๊ตฌ๋ณํ๋ ์ข์ ์๊ฐ ๋ ๊ฒ์ด๋ค.
Composite - Structural ¶
CompositePattern์ ์ฌ๋ฌ๋ถ๋ถ์์ ๋ํ๋๋ฉฐ, IteratorPattern, ChainOfResponsibilityPattern, InterpreterPattern, VisitorPattern ์์ ์ข
์ข
์ฐ์ธ๋ค.
Iterator - Behavioral ¶
Template Method - Behavioral ¶
์์์์ IteratorPattern ์ ์์ ์ฝ๋์์์ "Traverse" ๋ TemplateMethodPattern ์ ์์ด๋ค. ์ด ํจํด์ StrategyPattern ๊ณผ FactoryMethodPattern ๋ฅผ ๋ณด์ถฉํด์ค๋ค.
Abstract Factory - Creational ¶
AbstractFactoryPattern์ ๋๋ฒ์งธ๋ก ์ฌ์ด creational Pattern์ด๋ค. ์ด ํจํด์ ๋ํ FactoryMethodPattern๋ฅผ ๋ณด๊ฐํ๋๋ฐ ๋์์ ์ค๋ค.
Builder - Creational ¶
Singleton - Creational ¶
SingletonPattern์ ์ข
์ข
AbstractFactoryPattern ์ ๋ง๋๋๋ฐ ์ด์ฉ๋๋ค. (Related Patterns ์ฐธ์กฐ)
Proxy - Structural ¶
Proxy ๊ฐ ์ด๋ป๊ฒ object์ ๋ํ access๋ฅผ control ํ๋์ง ๊ณต๋ถํ๋ผ. ์ด ํจํด์ ๋ค์ AdapterPattern์ ์ง์ ์ ์ผ๋ก ์ด๋์ด๋ธ๋ค.
Adapter - Structural ¶
AdapterPattern์ DecoratorPattern, ProxyPattern, ๊ทธ๋ฆฌ๊ณ ๋ค์ ์ด์ด์ง๋ BridgePattern์ ๋ํด ํ์ต์๊ฐ ์๊ณ ์๋ ์ง์๊ณผ ๋น๊ต๋์ด์ง๋ค.
Bridge - Structural ¶
์ต์ข
์ ์ผ๋ก, ํ์ต์๋ ์ด๋ป๊ฒ BridgePattern์ด AdapterPattern ๊ณผ ProxyPattern ๊ณผ ๋ค๋ฅธ์ง ๊ณต๋ถํ๊ฒ ๋๋ค.
Mediator - Behavioral ¶
ObserverPattern ๊ณผ Model-View-Controller (MVC) Design ์ ์ดํดํ๊ธฐ ์ํ ์ค๋น๋จ๊ณ๋ก MediatorPattern์ ๊ณต๋ถํ๋ค.
Observer - Behavioral ¶
๊ณ ์ ์ ์ธ MVC Design ์ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ป๊ฒ ObserverPattern์ ์ํด MediatorPattern ์ด ์ด์ฉ๋๋์ง ๋ฐ๊ฒฌํ๋ผ.
Chain of Responsibility - Behavioral ¶
ObserverPattern ๊ณผ MediatorPattern ๋ค์ ์ด์ฉํ message์ ์ ๋ฌ๊ด๊ณ๋ฅผ ๊ด์ฐฐํ๋ฉด์, ChainOfResponsibilityPattern ์ message handling ๊ณผ ๋น๊ต & ๋์กฐํ ์ ์๋ค.
Memento - Behavioral ¶
์ด Pattern์ ๋ค์์ CommandPattern ์์ undo ์ redo์ ๊ตฌํ๋ถ๋ถ๊ณผ ์ด์ด์ง๋ค.
Command - Behavioral ¶
Prototype - Creational ¶
์๋ง๋ ๊ฐ์ฅ ๋ณต์กํ creational pattern ์ผ ๊ฒ์ด๋ค. PrototypePattern ์ ์ข
์ข
CommandPattern ๊ณผ ๊ฐ์ด ์ด์ฉ๋๋ค.
State - Behavioral ¶
object์ ํ๋ ๋ณํ์ ๋ํ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก StatePattern ์ ๊ณต๋ถํ ์ ์์ ๊ฒ์ด๋ค.
Visitor - Behavioral ¶
Flyweight - Structural ¶
๊ฐ์ฅ ๋ณต์กํ Pattern์ค ํ๋์ด๋ค. ์ด Pattern์ ์ด์ฉ ์์ ๋ ๋ค์ ํจํด์ธ InterpreterPattern ์์ ์์ ๋๋ค.
Interpreter - Behavioral ¶
InterpreterPattern ์ ๋ณต์กํ๋ค. ์ด Pattern์ FlyweightPattern ์ VisitorPattern ๊ณผ ๊ด๊ณ์์ผ๋ฉฐ, ์ดํด๋ฅผ ๋๋๋ค.
Facade - Structural ¶
๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ฝ์ Pattern ์ FacadePattern ์ด๋ค. ์ด Pattern์ InterpreterPattern ์ ์์ ์ฝ๋์ ๊ทธ ์ฃผ์ ๊ฐ ๋น์ทํ๋ฏ๋ก, InterpreterPattern ๋ค์์ ์ด์ด์ง๋ ๊ฒ์ด ์ ์ ํ๋ค.