MVP The Taligent Programming Model - ChoDragon9/posts GitHub Wiki
title: MVP The Taligent Programming Model sidebar: auto
์ด ๋ฌธ์๋ MVP๋ฅผ ์ต์ด๋ก ์ธ๊ธ๋ ๋ ผ๋ฌธ์ธ MVP: Model-View-Presenter The Taligent Programming Model for C++ and Java๋ฅผ ๋ฒ์ญํ ๋ฌธ์์ ๋๋ค.
๋ณธ๋ฌธ์์ฝ
- ์ค๋ชฐํ ํฌ์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ธ MVC๋ ์ธ ๊ฐ์ง ํต์ฌ ์ถ์ํ๋ฅผ ์ฌ์ฉํ๋ค. ๋ชจ๋ธ์ ๋ฐ์ดํฐ, ๋ทฐ๋ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ๋ฐฉ๋ฒ, ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์ ์ ์ค์ฒ ๋ฐ ์ด๋ฒคํธ
- ํ ๋ฆฌ์ ํธ์ ์ ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์ ๋ชจ๋ธ์ ๋ชจ๋ธ๊ณผ ๋ทฐ-์ปจํธ๋กค๋ฌ ๊ฐ์ ๋ถ๋ฆฌ๋ฅผ ๊ณต์ํํ๋ค. ๋ชจ๋ธ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ, ๋ทฐ-์ปจํธ๋กค๋ฌ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ผ๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ธ๋ถํํฉ๋๋ค.
- ์ด ๋ ๊ฐ์ง ๊ฐ๋
์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ค๋ค์ผ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ ๊ฐ์ง ๋์์ธ ๋ฌธ์ ๋ฅผ ๋ด๊ณ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ์ง?
- ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ์ ์ด๋ป๊ฒ ์ํธ์์ฉํ์ง?
- ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ธ๋ถํํ์ฌ Model/Selection/Command๋ก ๋ถ๋ฆฌํฉ๋๋ค.
- Model : ์บก์ํ๋ ๋ฐ์ดํฐ, ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค ๋ฐฉ๋ฒ
- Selection : ๋ฐ์ดํฐ ์ ํ ๋ฐฉ๋ฒ, Model ๋ฐ์ดํฐ์ ์ฌ๋ฌ ํ์ ์ธํธ๋ฅผ ์ง์ ํ๊ธฐ ์ํ ์ถ์ํ
- Command : ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ, Model์ Selection์์ ์ํํ ์ ์๋ ์์ ์ ๋ํ๋ด๋ ์ถ์ํ
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ธ๋ถํํ์ฌ View/Interactor/Presenter๋ก ๋ถ๋ฆฌํฉ๋๋ค.
- View : ๋ฐ์ดํฐ ํ์
- Interactor : ์ด๋ฒคํธ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ ์์ฒญ
- Presenter : Interactor์ ๋ฐ๋ฅธ ์ ์ ํ Command๋ฅผ ๋งคํํ๋ ๋น์ฆ๋์ค ๋ก์ง
- ๊ธฐ์กด์ Controller์ ๊ธฐ๋ฅ์ด์ง๋ง Interactor์ Command๋ฅผ ๋งคํํ๋ ์ญํ ์ ๊ณ ๋ คํด์ Presenter๋ผ๊ณ ํ๋ค. ๊ทธ๋์ MVP์ ์ด์์ด ํ์ํ๋ค.
Abstract
IBM์ 100% ์์ ์ํ์ฌ์ธ Taligent๋ ๊ณ ์ ์ MVC ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ผ๋ฐํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก C++ ๋ฐ Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ชจ๋ธ
์ธ Model-View-Presenter
๋๋ MVP
๋ฅผ ์ํ ์ฐจ์ธ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ
์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. MVP๋ ๊ด๋ฒ์ํ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ ๊ตฌ์ฑ์์ ๊ฐ๋ฐ ์์
์ ์ํ ๊ฐ๋ ฅํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ค๊ณ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. Taligent์ ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๊ฐ๋
๊ตฌํ์ MVP๋ฅผ ๊ณ ์ฉํ๋ ๊ฐ๋ฐ์ ํ๋ก๊ทธ๋จ์ ํฐ ๊ฐ์น๋ฅผ ๋ํ๋ค. ๋ํ MVP๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ/์๋ฒ ๋ฐ ๋ค์ค ๊ณ์ธต ์ ํ๋ฆฌ์ผ์ด์
์ํคํ
์ฒ์ ๊ฑธ์ณ ์ ์ํ ์ ์์ต๋๋ค. MVP๋ IBM์ด ๋ชจ๋ ์ฃผ์ ๊ฐ์ฒด ์งํฅ ์ธ์ด ํ๊ฒฝ์ ๊ฑธ์ณ ํตํฉ๋ ๊ฐ๋
ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ๊ณตํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Smalltalk Programming Model
ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๊ฐ์ฅ ์ต์ํ ์๋ 1970๋ ๋ ํ๋ฐ ์ ๋ก์ค ํํฌ์์ ๊ฐ๋ฐ๋ ์ํํ ํฌ ๋ชจ๋ธ1 ์ด๋ค. MVC๋ Smalltalk์์ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GUI) ๊ฐ์ฒด๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์ค๊ณ ํจํด์ด๋ฉฐ, ์ดํ ๋๋ถ๋ถ์ ๋ค๋ฅธ GUI ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์์ ๋ค์ํ ์์ค์ผ๋ก ์ฌ์ฌ์ฉ ๋ฐ ์ฑํ๋์์ต๋๋ค.
Smalltalk๋ MVC์ ์ธ ๊ฐ์ง ํต์ฌ ์ถ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ฒดํฌ๋ฐ์ค ๋๋ ํ ์คํธ ์ ๋ ฅ ํ๋์ ๊ฐ์ GUI ๊ฐ์ฒด๋ฅผ ๋ํ๋ ๋๋ค. ๋ชจ๋ธ์ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ ๋๋ค. ๋ทฐ๋ ๋ชจ๋ธ์์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋ชจ๋ธ์์ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค. ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์๊ฐ ์ ์ค์ฒ ๋ฐ ์ด๋ฒคํธ ํ์์ ๋ณด๊ธฐ์ ์ํธ ์์ฉํ์ฌ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ์: ํ์ธ๋์ ์ผ๊ธฐ ์ํ ๋๋ ํ ์คํธ ์ ๋ ฅ ํ๋์ ํ ์คํธ ๋ฌธ์์ด
- ๋ทฐ ์: ์ค์ ์ ํ ๋๋ ์ ํ ์ทจ์๋จ
- ์ปจํธ๋กค๋ฌ ์: ํ์ธ๋์ ํด๋ฆญํ์ฌ ์ผ๊ธฐ ์ํ๋ฅผ ์ ํํ๊ฑฐ๋ ํ ์คํธ ์ ๋ ฅ ํ๋์ ๋ฌธ์์ด์ ์ ๋ ฅํ์ฌ ๊ธฐ๋ณธ์ด ๋ณ๊ฒฝ๋จ
๋ชจ๋ธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์์ผ๋ฉฐ ๋ณด๊ธฐ๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํจ์ ๋ทฐ์ ํต๋ณดํ์ฌ ๋ฃจํ๋ฅผ ๋ซ์ต๋๋ค. SmallTalk์ ํ๋ก๊ทธ๋๋จธ๋ SmallTalk ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณต๋๋ ๋ชจ๋ธ, ๋ณด๊ธฐ ๋ฐ ์ปจํธ๋กค๋ฌ ์ถ์ํ์ ๋ํ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ์ธ๋ถํํ๊ณ ์ฌ์ฉ์ ์ง์ ํ์ฌ GUI ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. Smalltalk ํ๋ก๊ทธ๋๋จธ๋ ๋จ์ผ GUI ๊ฐ์ฒด ๋ด์์ ์ธ ๊ฐ์ง ํต์ฌ MVC ๊ฐ๋ ์ค ์ฌ์ ์ ์๋ ๊ธด๋ฐํ ๊ด๊ณ๋ฅผ ์์ํจ์ผ๋ก์จ ์ด์ ์ ๋๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ๋ฌ ์์๊ฐ ์๋ ๋ํ ์์์ ๊ฐ์ ๋ณด๋ค ๋ณต์กํ GUI ๊ฐ์ฒด๋ ์์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ๋ฌ ์ข ๋ฅ์ GUI ๊ฐ์ฒด ์ธ์คํด์ค๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ชจ๋ MVC ํด๋์ค๋ก ํ์๋ฉ๋๋ค. ๊ถ๊ทน์ ์ผ๋ก ์ ์ฒด ๋ํํ ๊ทธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ ์ MVC๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ฉ๋๋ค.
Building the Taligent / Open Class Programming Model
Taligent๋ IBM์ VisualAge ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ํ Open Class ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ชจ๋ ์ธํฐ๋ ํฐ๋ธ ํ๋ก๊ทธ๋จ์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด Smalltalk์ MVC ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์กฐ์ ๋ฐ ์ผ๋ฐํํ์ต๋๋ค. ์ด๋ฌํ ์งํ๋ Taligent์ ์๋ CommonPoint ์ ํ๋ฆฌ์ผ์ด์ ์์คํ ์์ ์์๋์์ผ๋ฉฐ, VisualAge์ฉ Open Class์ ํ์ฌ ๋ฐ ํฅํ ๋ฒ์ ์ ํตํด ๊ณ์๋์์ต๋๋ค.
Taligent์ ์ ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ณธ MVC ๊ฐ๋
์ ๊ตฌ์ฑ ์์๋ก ๋ถํดํ๊ณ ๋์ฑ ์ธ๋ถํํ์ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ณด๋ค ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๊ฒ์ด์์ต๋๋ค. ์ด ํ๋ก์ธ์ค์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ชจ๋ธ๊ณผ View-Controller ๊ฐ์ ๋ถ๋ฆฌ๋ฅผ ๊ณต์ํ
ํ๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ํ๋ ์ ํ
์ด์
์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ํ๋ก๊ทธ๋จ ๋ฌธ์ ๋ฅผ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
๋ผ๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋
์ผ๋ก ์ธ๋ถํ
ํ๋ ๊ฒ์ ๋ํ๋
๋๋ค. ์ด ๋ ๊ฐ์ง ๊ฐ๋
์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ค๋ค์ผ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ ๊ฐ์ง ๋์์ธ ๋ฌธ์ ๋ฅผ ๋ด๊ณ ์๋ค.
๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ตํ๋ ์ง๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ์ง?
์
๋๋ค. ์ด๊ฒ์ ๋ชจ๋ธ ๋ด์์ ๋จ์ง ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ํํ์ผ ๋ฟ๋ง ์๋๋ผ ์ด๋ค ๋ฐ์ดํฐ ๊ตฌ์กฐ, ์ก์ธ์ค ๋ฐฉ๋ฒ, ํ๋กํ ์ฝ ๋ณ๊ฒฝ, ์ง์์ฑ, ๊ณต์ ์ฑ, ๋ถ์ฐ์ฑ ๋ฑ์ ์ฑํํด์ผ ํ๋์ง ์ฌ๋ถ๋ ํฌํจํ๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ์ ์ด๋ป๊ฒ ์ํธ์์ฉํ์ง?
๋ผ๊ณ ๋๋ตํฉ๋๋ค. ์ด๋ ํ๋ฉด์์ ๊ฐ์ฒด ๊ทธ๋ฆฌ๊ธฐ, ๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ์ด๋ฒคํธ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉํ ์๋ฏธ ์์
, ์ฌ์ฉ์ ์์
์ธ์, ์ฌ์ฉ ์ค์ธ ์ ์ค์ฒ ์ธ์ด ๋ฐ ์ ๊ณต๋๋ ํผ๋๋ฐฑ๋ ๊ทธ ์ด์์
๋๋ค.
IBM์ VisualAge 3.0์ฉ Open Class์ ์ด์ ๋ฆด๋ฆฌ์ค์์ IBM์ ICLUI ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ธก๋ฉด์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ต๋๋ค. Taligent๋ 3.5 ๋ฆด๋ฆฌ์ฆ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ธก๋ฉด์ ๋ํ๋ด๋ ๋ณตํฉ ๋ฌธ์ ํ๋ ์์ํฌ์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ Open Class์ ๋ฐํํ์ต๋๋ค. ์์ผ๋ก ์์ 4.0 ์คํ ํด๋์ค ๋ฆด๋ฆฌ์ค์์ ์ด ๋ ๊ฐ์ง ์ธก๋ฉด์ด ์ด๋ป๊ฒ ์ผ๋ฐํ๋๊ณ ๊ฐ์ ๋ ๊ฒ์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
๋ชจ๋ธ์ ์บก์ํ ๊ฐ๋ฅํ๋ค
๋ชจ๋ธ ๊ฐ๋ ์ ์ผ๋ฐํํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๋ชจ๋ธ๊ณผ ํ๋ ์ ํ ์ด์ ์ ์์ ํ ๋ถ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ๋ก๊ทธ๋จ ๋ด์์ ์ ํ ๋ชฉ๋ก ๊ตฌ์ฑ ์์๋ฅผ ๊ตฌํํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด์ญ์์ค. ๋ด ๋ชจ๋ธ์ ๋ชจ๋ ์ด๋ฆ๊ณผ ์ ํ ๋ฒํธ ์์ ๋ํ ๋ฐ์ดํฐ์ ์ฟผ๋ฆฌ ๋ฐ ๋ณ๊ฒฝํ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์บก์ํํฉ๋๋ค. ์ ํ๋ ์ ํ ์ด์ ์ ์ ํ ๋ชฉ๋ก ๋ฐ์ดํฐ์ ๋ํํ ์ ํ๋ฒํธ๋ถ ํ์์ผ ์ ์์ต๋๋ค.
๊น๋ํ ๋ถ๋ฆฌ์ ์บก์ํ๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ด ์๊น๋๋ค. ์๊ฐ์ด ํ๋ฅด๋ฉด์ ๋๋ ๋ด ๋ชจ๋ธ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์๋ค. ์๋ฅผ ๋ค์ด, ๋ ๋น ๋ฅธ ์ฝ์ ์ ์ํ ๋งํฌ๋ ๋ชฉ๋ก, ๋ ๋์ ์ํ๋ฒณ ๊ฒ์์ ์ํ ํด์๋ ๋๋ ์์ธ๋ ํ, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฉ์ผ๋ง ์ฃผ์์ ๊ฐ์ ์ถ๊ฐ ํ๋ ๋ฑ์ด ์์ต๋๋ค. ์ ๋ ๊ฐ๋จํ ์ ํ๋ฒํธ๋ถ, ์ํ๋ฒณ ํญ์ด ์๋ ์ ํ๋ฒํธ๋ถ, ๊ฒ์ ๊ธฐ๋ฅ์ด ์๋ ์ ํ๋ฒํธ๋ถ ๋ฑ์ ์์ ํ์ง ์๊ณ ๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ ์ ํ ์ด์ ์ ๋ง๋ค ์ ์์์ต๋๋ค. ์ ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ชจ๋ธ๋ค๊ณผ ํ๋ฆฌ์ ํ ์ด์ ์์ ๋ณ๋ ฌ๋ก ์์ ํ๋๋ก ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ด ์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ์ผ๋ก ์์ ํ๊ฒ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ด์ ์ ๋ช ๋ฐฑํด ๋ณด์ผ ์ ์์ง๋ง, ๋๋ ๋งํ ์์ ํ๋ก๊ทธ๋จ๋ค์ด ๊ทธ๋ฌํ ๋ช ํํ ๋ถํด๋ ์ ์ ์ ์ฑํํ์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ํ์, ์ ์ฅ, ๋ณํํ๋ ์ฌ๋ฌ ์์น์์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ํ ์ฌ๋์ด ๋ชจ๋ ๊ฒ์ ๋๋ฐ๋ก ํ ์ ์๋ ์์ ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก๊ทธ๋จ์๋ ๋ฐ๋์ ํด๋ก์ธ ํ์๋ ์๋ค. ๊ทธ๋ฌ๋ ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ค์ด ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ ๋ฐฉ์์ธ ์ด ์คํ์ผ์ ์ฝ๊ฒ ์ค์ผ์ผ์ ํ๊ฑฐ๋ ์์ ํ๊ฑฐ๋ ๊ฐ์ ํ ์ ์๊ฑฐ๋, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ ๋ถ ๋๋ ์ผ๋ถ๋ฅผ ์ฌ์ฌ์ฉํ๊ฑฐ๋, ๋๋ ํ๋ฒ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋จธ์ ์ํด ์์ ๋ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์์ฐํ์ง ์๋๋ค.
๋ชจ๋ธ์ ์ง์๊ฐ๋ฅํ๋ค
์ด์ ์์์ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ ์์ฒด์ ์ ์ฅ๋์์ต๋๋ค. ์ฆ, ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ชจ๋ธ ํด๋์ค ๋ด์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํ ๋น๋์์ต๋๋ค. ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ๋ชจ๋ธ์ด ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ฒซ ๋ฒ์งธ ์์์ ๋ชจ๋ธ์ ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์์์ ์ก์ธ์คํ๋ ๋ฐ์ดํฐ์ ํ๋ก์๋ฅผ ์ ์ธํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ๋๋ ๋ชจ๋ธ์ ์ด๋ฆ, ์ ํ ๋ฒํธ ์์ ์ ์ฅํ๋ ์๊ฒฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ํ๋ ์ฟผ๋ฆฌ ์์ง ์ฝ๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ๋ชจ๋ธ์ ์ก์ธ์ค ์ ์ด ๋ฐ ์ธ์ฆ(๋ก๊ทธ์ธ)์ ๊ตฌํํ๊ณ , ํ๊ณ ๋๋ ์ถฉ์ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ฉฐ, ์ฑ๋ฅ์ ์ํด ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ์บ์ํ๊ณ , ๋ค๋ฅธ ๊ณต๊ธ์ ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ ๋ฐ ์ด์คํ ๋ฑ์ ์ ๊ณตํ ์ ์์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ํ๋ ์ ํ ์ด์ ์ ํฌ๋ช ํ๊ฒ ์ํ๋๋ฉฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋๋ ๋ค๋ฅธ ์ค์น๋ฅผ ์ํด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ชจ๋ธ์ ๊ณต์ ๊ฐ๋ฅํ๋ค
๋ชจ๋ธ์ ์ถ์ํํ๋ฉด ์ฌ๋ฌ ์ฌ์ฉ์ ๊ฐ์ ๋ณด๋ค ์ ์ฐํ ์ฌ์ฉ๋ ๊ฐ๋ฅํฉ๋๋ค. ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์ด ๋์ผํ ์๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ์บก์ํํ๋ฉด ํ์ฌ ์ ํ๋ฒํธ๋ถ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๊ณต์ ๋ฐ์ดํฐ ๋ชจ๋ธ์์ ์ ์ ํ๋ฒํธ๋ถ๋ฅผ ์ ๋ ฅํ๋ฉด ๋ชจ๋๊ฐ ํญ์ ์ต์ ์ํ์ด๋ฉฐ, ๋ชจ๋ธ์ด ์์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํญ๋ชฉ์ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๋ํ ์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ์๋ก ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ํ์ ํ๊ณ ๋์ผํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ์ ํ๋ฒํธ๋ถ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์, ์ ํ ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ด๋ฆฌ์, ๊ฐ์ธ ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋ ์ธ์ฌ ๊ด๋ฆฌ์ ๋ฑ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ํ๋ ์ ํ ์ด์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
3๊ฐ์ง ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ง๋ฌธ
Taligent๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(๋ชจ๋ธ-ํ๋ ์ ํ ์ด์ ) ๋ถ๋ฆฌ๋ฅผ ํตํ ๊ด๋ฒ์ํ ๊ฐ๋ฐ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ ๋ฐ์ ๋ํ ํต์ฌ ์ถ๊ฐ ๊ฐ์ ์ฌํญ์ ํ์ ํ์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ์ธ ๊ฐ์ง ํ์ ํ๊ฐ๋ก ๋ถํดํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ง๋ฌธ์ ๋ด ๋ฐ์ดํฐ๊ฐ ๋ญ์ง?
์
๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ์ํ ํ ํฌ ๋ชจ๋ธ์ ํด๋นํ๋ ์ ์ ํ Model
์ด๋ฉฐ, ์บก์ํ๋ ๋ฐ์ดํฐ, ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค ๋ฐฉ๋ฒ ๋ฑ์ด ์์ต๋๋ค.
๋ ๋ฒ์งธ ์ง๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ์ง?
์
๋๋ค. Selection
์ด๋ผ๊ณ ํ๋ Model
๋ฐ์ดํฐ์ ์ฌ๋ฌ ํ์ ์ธํธ๋ฅผ ์ง์ ํ๊ธฐ ์ํ ์ถ์ํ์
๋๋ค.
์ธ ๋ฒ์งธ ์ง๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ์ง?
์
๋๋ค. Model
์ Selection
์์ ์ํํ ์ ์๋ ์์
์ ๋ํ๋ด๋ ์ถ์ํ์
๋๋ค. Command
๋ผ๊ณ ํฉ๋๋ค.
Model, View, Selections, Commands
์ด ๊ฐ๋ ๋ค์ ๋ณด์ฌ์ฃผ๋ ๊ฐ๋จํ ์๋ฅผ ์ดํด๋ด ์๋ค. ์ฐ๋ฆฌ์ ๋ชจ๋ธ์ด 2์ฐจ์ ์ ์์ ๋ฐฐ์ด์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด Model์ View๋ ๋์ ๋ง๋ ์ฐจํธ์ผ ์ ์์ต๋๋ค. ๊ฐ์ Model์ ๋ํ ๋ณด๊ธฐ๊ฐ ๋ ๊ฐ ์ด์ ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ค ์ ๊ทธ๋ํ ๋๋ ์คํ๋ ๋์ํธ ํ ์ด๋ธ์ ์ด Model์ ๋ค๋ฅธ ์ข ๋ฅ์ View์ ๋๋ค. View๋ ๊ทธ๋ํฝ์ผ ํ์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ์ข ๋ฅ์ View๋ ํผ์๋ ธ ํค๋ณด๋์ ๋ฉ๋ชจ๋ฅผ ํ ์๋ ์๊ณ ๊ณต์ฅ์์ ๋ฐธ๋ธ ์ค์ ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก View ์๋ Model์ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ฐ์ View๊ฐ ์์ ์ ์์ต๋๋ค.
Model์์ ์ ํํ ๊ฒ์ ๋ฐ์ดํฐ์์ ์์ ์ด์ ์ ํํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ผ๋ จ์ ๋ฐ์ดํฐ, ๋จ์ผ ์์ ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ๊ฒ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ข
๋ฅ์ Selection์
๋๋ค. ํ
์คํธ Model์์๋ ์ผ๋ถ ํ
์คํธ ์์ ๋ง์ฐ์ค๋ฅผ ๋์ผ๋ฉด ์ ํ ํญ๋ชฉ์ด ๋ํ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๋จ์ผ ๋ฌธ์, ๋จ์ด, ๋ฌธ์ฅ ๋๋ ์ ์ฒด ํ
์คํธ์ผ ์ ์๋ค. ์ ํ ํญ๋ชฉ์ ์ฌ๋ฌ ๊ฐ์ ๋ถ์ฐ์ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ง์ด ์ฝ์
์ ์ 0 ๊ธธ์ด ์ ํ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฐ ๋ค์ Command
์ ๋ด Model
์์ Selection
์ ๋ํ ์์
์ ์ ์
ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ง๋ ์ฐจํธ ์ ํ์ ์์, ํจํด ๋๋ ๊ธฐํ ๋ชจ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ช ๋ น์ ์ ํ ํญ๋ชฉ์ ์ญ์ , ์ด๋, ๋ณต์ฌ, ๋ณ๊ฒฝ, ์ ์ฅ ๋๋ ์ธ์ํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ํ ์คํธ Model์๋ ๊ธ๊ผด, ์คํ์ผ ๋ฐ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ผ๋ด๊ธฐ, ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ ๋๋ ์ฒ ์๋ฅผ ํ์ธํ๋ ๋ช ๋ น ๋ฑ์ด ์์ต๋๋ค. ๋ค์ํ ๋ฒํผ, ์ ์ค์ฒ ๋ฐ ํค๋ณด๋ ๋ฑ๊ฐ๋ฌผ ๋ค์ ์๋ ๋ฉ๋ด ํญ๋ชฉ ๋ฐ ์์ ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ช ๋ น์ด๋ก ๋์ด ์์ผ๋ฉฐ, Model ๋ด ์ ํ ํญ๋ชฉ(๋๋ ํน์ ์ ํ์ ์ ํ)์์ ์๋ํ ์ ์์ต๋๋ค. ์ง๊ด์ ์ผ๋ก, ์ด๋ฌํ ์ถ์ํ๋ ์ฐ๋ฆฌ๊ฐ ๋งค์ผ ์ฌ์ฉํ๋ ๋งค์ฐ ๋ค์ํ ์ธํฐ๋ ํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๋ํ๋ผ ์ ์๋ค.
์ธ ๊ฐ์ง ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ง๋ฌธ
์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํํ ์ธก๋ฉด์ ์ด์ ์ ๋ง์ถ๊ฒ ์ต๋๋ค. ์์ฉํ๋ก๊ทธ๋จ์์ ๋ํํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํฉ๋๊น? ์ด๋ฅผ ์ธ ๊ฐ์ง ์ง๋ฌธ์ผ๋ก ๋๋๋๋ค.
์ฒซ ๋ฒ์งธ ์ง๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํ์ํ์ง?
์
๋๋ค. ์์์ ์ค๋ช
ํ ๋๋ก์
๋๋ค. ์ฌ๋ฌ ๊ฐ์ View๊ฐ ์์ ์ ์์ผ๋ฉฐ View๊ฐ ๋น์ฃผ์ผํ์ง ์์๋ ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ์ง๋ฌธ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ป๊ฒ ๋งคํ๋์ง?
์ฐ๋ฆฌ๋ ์ด๋ฌํ Interactor
์ผ๋ก ๋ถ๋ฆ
๋๋ค. Interactor
์ด๋ฒคํธ๋ ๋ง์ฐ์ค ์ด๋ ๋ฐ ํด๋ฆญ, ํค๋ณด๋ ํค ์
๋ ฅ ๋๋ ์ค์์น ๋ค์ง๊ธฐ, ๋ค์ด์ผ ๋ณ๊ฒฝ ๋๋ ๋์คํฌ ์ฝ์
๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์์ ๋์์ ๋งํฉ๋๋ค. ๋๋ถ๋ถ์ ์ธํฐ๋ ํฐ๋ธ ์ปดํจํฐ์๋ ๋ฉ๋ด ์ ํ, ๋์ด์ ๋๊ธฐ, ๋จ์ถ ๋ฐ ํ์ธ๋ ํด๋ฆญ, ๊ทธ๋ฆฌ๊ธฐ ์์
, ํ, ํ๊ธฐ ๋ฐ ์์ฑ ์
๋ ฅ์ผ๋ก ํ์ฅ ๋ฑ์ ๋ค์ํ ๋ง์ฐ์ค ์ธํฐ๋ ํฐ ์ธํธ๊ฐ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ์ง๋ฌธ์ ์ด๋ป๊ฒ ํ๋ฉด ๋ค ํฉ์น ์ ์์ง?
์
๋๋ค. ์ด๋ ๊ธฐ์กด์ Smalltalk Controller์ ๊ธฐ๋ฅ์ ๋ํ๋ด์ง๋ง ์ ํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ๋ก ์์นํ์ฌ Selection
, Command
๋ฐ Interactor
๊ฐ๋
์ ๊ณ ๋ คํฉ๋๋ค. ์ด๋ฌํ ํน์ง์ ํฌ์ฐฉํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ข
๋ฅ์ Controller
๋ฅผ Presenter
๋ผ ๋ถ๋ฅธ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ฐ๋ฆฌ๋ ์ ์ฒด์ ์ธ ๊ฒฐ๊ณผ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ Model View-Presenter
๋๋ MVC์ ์ผ๋ฐํ๋ ํํ๋ก์ ๊ทธ๊ฒ์ ๊ธฐ์์ ์ธ์ ํ๋ฉด์ ์ธ๊ธํ๋ค. MVP์์ ํ๋ฆฌ์ ํฐ์ ์ญํ
์ ์ฌ์ฉ์๊ฐ ์์ํ ์ด๋ฒคํธ์ ๋์์ ํด์ํ๊ณ Model์ ์๋๋ ๋ฐฉ์์ผ๋ก ์กฐ์ํ๊ธฐ ์ํ ์ ์ ํ Command์ ์ด๋ค์ ๋งคํ
ํ๋ ๋น์ฆ๋์ค ๋ก์ง
์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
์ธํฐ๋ํฐ์ ํ๋ฆฌ์ ํฐ
์ด์ ๋ง๋ ์ฐจํธ ์์ ๋ฅผ ์๋ฃํ๋ฉด ๋ํ ์์๊ฐ ๋ง์ฐ์ค ์ถ์ ๋ฐ ์ด๋ฒคํธ, ์ ํ ์ฌ์, ๋ฉ๋ด ์ ํ ๋ฐ ํค๋ณด๋ ๋ฑ๊ฐ๋ฌผ์ ์ค๋ช ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์, ํ๋ฆฌ์ ํฐ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ธฐ์กด "๋ฉ์ธ" ๋๋ "์ด๋ฒคํธ ๋ฃจํ" ๋ถ๋ถ์ ๋ํ๋ด๋ฉฐ, ์ ์ ํ ๋ชจ๋ธ, ์ ํ, ๋ช ๋ น, ๋ณด๊ธฐ ๋ฐ ์ธํฐ๋ํฐ๋ฅผ ๋ง๋ค๊ณ , ํธ๋ํฝ์ฒ๋ผ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ๋๋ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์ง์ํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ ๊ณตํฉ๋๋ค.
MVP: Model-View-Presenter
์์ฝํ์๋ฉด, ์ธ ๊ฐ์ง ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ง๋ฌธ
- ๋ด ๋ฐ์ดํฐ๊ฐ ๋ญ์ง? (Model)
- ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ์ง?(Selection)
- ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ์ง?(Command)
์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ง๋ฌธ ์ธ ๊ฐ์ง 4) ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํ์ํ์ง?(View) 5) ์ด๋ฒคํธ๊ฐ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ป๊ฒ ๋งคํ๋์ง?(Interactor) 6) ์ด๋ป๊ฒ ํ๋ฉด ๋ค ํฉ์น ์ ์์ง?(Presenter) ๊ฐ๋ฐ์๊ฐ ์ ์ฒด MVP ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ๋ต๋ณํ๋ 6๊ฐ์ง ์ง๋ฌธ์ ๊ตฌ์ฑํ๋ค.
Programming Model Frameworks
MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์งํํ๋ Taligent์ ๊ฐ๋ฐ์์, ์ด๋ฌํ ์ถ์ํ์ ์ค๊ณ์ ๊ตฌํ์ ๊ฐ์ฒด ์งํฅ ํ๋ ์์ํฌ๋ก ์ ๊ณต๋์ด ๊ฐ๋ฐ์๋ค์ด ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํน์ ๋ฒ์ ์ ์์๋ฅผ ๋ง๋ค ๋ ํ์ ๋ถ๋ฅํ๊ณ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค. Taligent ํ๋ ์์ํฌ๋ ๋ณ๋๋ก ์ฌ์ฉ๋ ์ ์์ง๋ง, ๊ฐ๋ฐ์๊ฐ ์ค๊ณ์ ๊ตฌํ์ ์ฌ์ฌ์ฉํ ์ ์๋ ์ ์ฒด์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ๊ณตํ๊ธฐ ์ํด ํจ๊ป ์ ์๋ฉ๋๋ค.
Taligent๋ IBM VisualAge 4.0์ฉ Open Class์ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ๊ฐ๋ฐ์๋ค์ด ๋ชจ๋ธ์ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ๋ชจ๋ธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ ์์ ์ ๋๋ค. ๋ํ Taligent๋ ๊ฐ๋ฐ์๊ฐ ์ ํ ํญ๋ชฉ ๋ฐ ๋ช ๋ น์ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ํ๊ณผ ๋ช ๋ น์ ํํ ํจ๊ป ์ค๊ณ๋๋ฉฐ, ํ์ฌ ์ด๋ฌํ ์ถ์ํ๋ฅผ ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋๋ ๋จ์ผ ํ๋ ์์ํฌ๊ฐ ์ ์ ํ ์ค๊ณ ์ ํ์ผ๋ก ๋ณด์ธ๋ค.
MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ ๋ฆฝํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ง๋ง, ์ ์ ๋ ๋ง์ ์ค๋๋ ์ ์ํํธ์จ์ด์๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํด ํจ๊ป ์๋ํ ์ ์๋ ๊ตฌ์ฑ ์์ ๋๋ ๋ ์์ ํ๋ก๊ทธ๋จ ๋จ์๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ MVP ๋ชจ๋ธ์ ๊ตฌ์ฑ์์ ์ํคํ ์ฒ์ ๋งจ ์์ ์์ผ๋ฏ๋ก ๋ชจ๋ธ, ๋ณด๊ธฐ ๋ฐ ์ด๋ฒคํธ๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ๋ฐํ์์ ๋งคํ๋ฉ๋๋ค.
Taligent๋ OS/2 ๋๋ AIX์ ๊ฐ์ OpenDoc ํ๋ซํผ์์ OpenDoc์ ๋งคํ๋๋ ๊ตฌํ๊ณผ ํจ๊ป ๋จ์ผ ๊ตฌ์ฑ์์ ํ๋ ์์ํฌ API๋ฅผ ์ ๊ณตํ๋ฉฐ, Windows์ ๊ฐ์ OLE ํ๋ซํผ์์ OLE๋ก ๋งคํ๋๋ ๊ตฌํ์ ๊ฐ๊น์ด ์ฅ๋์ Java๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด API๊ฐ ๋งคํ๋ ๊ตฌ์ฑ ์์ ๋ชจ๋ธ n๊ฐ. ๊ทธ๋ฌ๋ CommonPoint ๊ตฌ์ฑ์์ ๋ฐํ์์ด ์ทจ์๋์์ผ๋ฉฐ Open Class์ ๋ชจ๋ ๋ฒ์ ์ Taligent ๊ธฐ์ ์ด ์ด์ OpenDoc ๋๋ OLE๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ๋ฐํ์์ ์๊ตฌ๋๊ณ ๋งคํ๋ฉ๋๋ค.) CommonPoint์ ๋ํ๋ Taligent Compound Document Framework์๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ, ๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฐ ๊ตฌ์ฑ์์ ํ๋ ์์ํฌ์ ๊ฒฐํฉ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. VisualAge 3.5์ฉ Open Class์ ๋ํ๋ Compound Document Framework์๋ Model Framework์ Component Framework ๊ธฐ๋ฅ์ด ์์ง๋ง VisualAge 4.0์ฉ Open Class์์ ๋ค์ ์๊ฐ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ๋ ์์ต๋๋ค.
CommonPoint์ ๋ํ๋ Taligent Presentation Framework๋ CommonPoint์ ์์ฒด ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฆฌ์ ํฐ ๋ฐ ๋ํ์ ๋ฐ ๋ทฐ ์ถ์ํ์ ์กฐํฉ์ ๋ํ๋ ๋๋ค. VisualAge 4.0์ฉ Open Class๋ IBM์ ICLUI ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ํํ ์ฌ์ฉ์ ๋ฐ ์ถ์ํ๋ฅผ ๋ณด๊ธฐ ์ํด ์ฌ์ฉํ๋ฏ๋ก VisualAge 4.0์ฉ Open Class์์ ํ๋ ์ ํ ์ด์ ํ๋ ์์ํฌ๋ ํ๋ฆฌ์ ํฐ ์ถ์ํ๋ก๋ง ์ถ์ํ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๊ธฐ์ดํ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ ์์คํ ์ ์ด๋ฒคํธ, ์ด๋ฒคํธ ์ก์ ์ ๋ฐ ์์ ๊ธฐ, ์ด๋ฒคํธ ์ ํ ๊ฒ์ฌ, ๋ชจ๋ ๋ชจ๋ธ ์ํธ ์์ฉ์ ์ค์ฌํ๊ธฐ ์ํ ์ด๋ฒคํธ ์ ํ ๊ฒ์ฌ ๋ฑ์ ์ ๊ณตํ๋ ์๋ฆผ ํ๋ ์์ํฌ์ ๊ตฌํ๋๋ค.
Programming Model Classes
MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ํ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ์ฐ๋ฆฌ๊ฐ ๋ ผ์ํด์จ ํด๋์ค ๊ตฌ์กฐ์ ๊ฐ๋ ์ ์ง์ ์ ์ธ ์ผ์น์ฑ์ ๋ณด์ฌ์ค๋ค. ์ด ๋ค์ด์ด๊ทธ๋จ์ ์ด๋ฌํ ๊ด๊ณ์ ๋จ์ํ์ง๋ง ์ค๋ก๊ฐ ๋๋ ๊ฐ์๋ฅผ ๋ํ๋ ๋๋ค.
๊ฐ MVP ๊ฐ๋ ์๋ IModel, IView, ISelection, ICommand, IInteractor ๋ฐ IPresenter์ ๊ธฐ๋ณธ ํด๋์ค๊ฐ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ํ์ ๋ถ๋ฅํ๊ณ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ฌ์ ์ํ์ฌ ์ด๋ฌํ ์ถ์ํ์ ํน์ ๋ฒ์ ์ ๋ง๋ญ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํ์์์ IMyModel์ myData๋ฅผ ๊ฐ์ธ ๋ฐ์ดํฐ ๊ตฌ์ฑ์์ผ๋ก ์ ์ํ๊ณ IModel์ getData๋ฅผ ์ฌ์ ์ํ๊ณ myData๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ฐฉ๋ฒ์ ์ค์ ํฉ๋๋ค. IMyView๋ IView์ drawContents ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ํ๋ฉด์ myData ๋ฉ์๋ ํธ์ถ์ ์ฌ์ฉํ์ฌ myData ๋๋ฉด์ ๊ตฌํํฉ๋๋ค. IMySelection์ myData์ ๊ฐ๋จํ ์ ํ์ ์ ์ํ๊ณ ํ์ด๋ผ์ดํธ์ ํ์ ๊ตฌํํ์ฌ ํ๋ฉด์์ ์ ํ์ ๋ช ํํ ํฉ๋๋ค. ์ํ๋ ๋ช ๋ น์ด(์: ๊ฐ ๋ช ๋ น์ด/๋ณต์ฌ๋ณธ)์ ๋ช ๋ น์ด๋ณ๋ก ICommand์ ๋ณ๋ ํ์ ํด๋์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ณด๋ค ์๋ฒฝํ ๊ตฌํ์ ๊ฒฝ์ฐ ๊ฐ ๋ช ๋ น์๋ doCommand, unchCommand ๋ฐ redoCommand์ ๋ฐฉ๋ฒ์ด ์์ด ์์คํ ์ด ๋ช ๋ น์ด ์คํ ์ทจ์ ๋ฐ ์ฌ์คํ ๋ฑ์ ์ฌ๋ฌ ์์ค์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ผ๋ฐ์ ์ธ ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ ๊ทธ๋ค ์์ ์ ์ํธ์์ฉ๊ธฐ๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ค. ๊ฐ๋ฐฉํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ IMenu Interactor ๋๋ IButton Interactor์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ์ํ ๋ค์ํ ๋ฏธ๋ฆฌ ์ ์๋ IInteractor ํ์ ํด๋์ค๊ฐ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ IMenuInteractor์ ๊ฐ์ ๊ธฐ์กด ํ์ ํด๋์ค๋ฅผ ์ธ์คํด์คํํ๊ณ , ํน์ ๋ ์ด๋ธ๋ก IMenuItem ๊ฐ์ฒด๋ฅผ ํน์ ์์๋ก ์ธ์คํด์คํํ๊ณ , ํ์ฌ ์ ํ ์ ํด๋น ๋ช ๋ น์ ํธ์ถํ๋๋ก ์์ฒญํฉ๋๋ค. ์ด๋ฌํ ๊ด๊ณ์ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ค์ ๋๋ ๊ฒ์ด ์๋๋ผ ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํํ๊ณ ์ ์ํ๋ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๊ฐ๋ฐ์๋ค์ IPresenter์์ ๊ทธ๋ค์ IMyPresenter๋ฅผ ํ์ ๋ถ๋ฅํ๋ค. IPresenter๋ MFC, OWL ๋๋ MacApp๊ณผ ์ ์ฌํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์ ์ต์์ ์์ค์ ๋ํ๋ธ๋ค. IMyPresenter๋ ํน์ ๋ชจ๋ธ, ๋ณด๊ธฐ, ์ ํ, ๋ช ๋ น ๋ฐ ์ธํฐ๋ํฐ๋ฅผ ๋ง๋ค์ด ์ด๋ค์ ๋ชจ๋ ํ๋๋ก ๋ฌถ์ด ๊ธฐ๋ฅ์ฑ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ญ๋๋ค.
Building An Application
MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ฅ์ ์ ์ง๊ด์ ์ธ ์ถ์ํ ์ธํธ๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ์์ ์ฝ๋์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ํ๋ถํ ๊ธฐ๋ณธ ๊ตฌํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ด์ ์ ์ค๋ช ํ๊ธฐ ์ํด ๊ณ์ฐ๊ธฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋จํ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ํ ์ด ์๋ MVP ๊ฐ๋ ์ด ๋ชจ๋ ๋์์ ํ์ต๋ ํ์๋ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ณด๋ค๋ ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์์ ์์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ MVP ์ถ์ํ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋์ ํ ์ ์์ต๋๋ค.
์ฒซ์งธ, ํ๋ฆฌ์ ํฐ ์ถ์ํ๋ฅผ ์ ํ ์ฌ์ฉํ์ง ์๊ณ ๊ณ์ฐ๊ธฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ ์ ์์ง๋ง, ๊ธฐ์กด์ ๋ฉ์ธ ๋ฃจํด๊ณผ ์ด๋ฒคํธ ๋ฃจํ์ ์์ผ๋ก ์ฝ๋ฉํ ์ ์์ต๋๋ค. ์ผ๋ถ ํ๋์ฝ์ด ํ๋ก๊ทธ๋๋จธ๋ค์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก "์์ ๋ค๋ง์ ๊ฒ์" ์ ํธํฉ๋๋ค. ๊ทธ๋ฌ๋ MFC์ ๊ฐ์ OO ํด์ ์ต์ํ ๊ฐ๋ฐ์๋ค์ ํ๋ฆฌ์ ํฐ์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ํ์ ๋ถ๋ฅํ๊ณ ๊ทธ๊ฒ์ผ๋ก๋ถํฐ ๋ฉ์ธ ๋ฐ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์์๋ฐ๋ ๊ฒ์ด ๋ ์ฝ๋ค๋ ๊ฒ์ ์๊ฒ ๋ฉ๋๋ค. ์ข์ ํ๋ฆฌ์ ํฐ ํ๋ ์์ํฌ
๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ ์ข
๋ฃ ๊ธฐ๋ฅ, ๊ธฐ๋ณธ ๋ฉ๋ด ๋ชจ์ ๋ฐ ๊ฒน์น๋ ์ฐฝ, ๋์๋ง ๊ธฐ๋ฅ, ๊ธฐ๋ณธ ๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ ์ฒด ๊ณ์ฐ๊ธฐ ์์ฉ ํ๋ก๊ทธ๋จ์ Presenter์ ๋ฐฉ๋ฒ ๋ด์ ์ธ ์ ์๊ณ , ์์ ๊ทธ๋ํฝ ํธ์ถ๋ก ๋ฒํผ์ ๋๋ฅด๊ณ , ๋ฒํผ์ ๋๋ฅด๋ ๊ฒ์ ๊ตฌํํ๊ธฐ ์ํ ๋ฎ์ ์์ค์ ๋ง์ฐ์ค ์ถ์ , ๊ณ์ฐ๊ธฐ ์
๋ฐ์ดํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ค์ ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ MVP ์ถ์ํ๋ ๋ฌด์๋ ์ ์์๋ค.
๊ทธ๋ฌ๋, ๊ฐ๋ฐ์๊ฐ ๊ณ์ฐ๊ธฐ ์ฌ์์ฑ์ ์๊ตฌํ๋ ๊ทธ๋ํฝ ํธ์ถ์ ๊ธฐ๋กํ๊ธฐ ์ํด IView๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, IView๋ ์ฐฝ์ ํฌ๊ธฐ ์กฐ์ ๊ณผ ๋
ธ์ถ์ ๋ํ ์ฌ์์ฑ ๊ด๋ฆฌ, ๊ธฐ๋ณธ ์ธ์, ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์ฑ๊ธฐ์ ํ๋ ฅํ์ฌ ํน์ ๊ณ์ฐ๊ธฐ ๋ ์ด์์์ ๊ตฌ์ฑ ๋๋ ๋ณ๊ฒฝํฉ๋๋ค.
Presenter์ View๋ง ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ์์ ๊ณ์ฐ๊ธฐ ๋ ์ง์คํฐ๋ฅผ View ๋ด์ ๋ฐ์ดํฐ ๊ตฌ์ฑ์์ผ๋ก ์ ์ฅํฉ๋๋ค. ์ด๊ฒ๋ค์ ๊ทธ ๊ณ์ฐ๊ธฐ์ ์คํ์ ์ผ์ ๋์ ์์ ๊ฒ์ด๊ณ ๊ณ์ฐ๊ธฐ๊ฐ ๋ฉ์ถ๋ฉด ๊ฒฐ๊ณผ๋ ์ฌ๋ผ์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฐ์๊ฐ ๊ณ์ฐ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ธฐ ์ํด IModel์ ํ์ ํด๋์ค์ธ ๊ฒฝ์ฐ, ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ณ์ฐ๊ธฐ ์ข ์ด ํ ์ดํ์ ์ ์ฌํ ๊ณ์ฐ๊ธฐ "๋ฌธ์"๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ด ๋ฌธ์๋ ์๋ก ์์ฑ๋์ด ๊ณ์ฐ๋ ๊ฐ์ ๊ธฐ๋กํ๊ณ ํ์ผ์ ์ ์ฅํ ํ ๋ซ์ ๋ค์ ๋ค์ ์ด์ด์ ์ฝ์ ์ ์์ต๋๋ค. ๋ํ ๋ชจ๋ธ ํ๋ ์์ํฌ์ ๊ตฌ์ฑ์์ ํ๋ ์์ํฌ ์ฌ์ด์ Taligent์ ์ฐ๊ฒฐ๋ก ์ธํด ์ ์ฒด ๊ณ์ฐ๊ธฐ๋ OpenDoc ๋๋ OLE ๊ตฌ์ฑ์์๊ฐ ๋ ์ ์์ผ๋ฉฐ ๊ฐ๊ฐ ๋ค๋ฅธ OpenDoc ๋๋ OLE ๋ฌธ์์ ํฌํจ๋ ์ ์์ต๋๋ค.
์ง๊ธ๊น์ง ๋ชจ๋ธ์ ๋ํ ์์ ์ ์ธํธ์ ๊ฐ์ ธ์ค๊ธฐ ๋ฐฉ๋ฒ์ ๋ํ ์ง์ ์ฐ๊ฒฐ์ ๋๋ค. ์ด์ Selection์ ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ข ์ด ํ ์ดํ์์ ๊ฐ๋ณ ๋ฐ์ดํฐ ์์๋ฅผ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค. ์ด์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ์์ ์ ํํ ๋ฐ์ดํฐ์ ๋ํ ๊ธฐ๋ณธ ์๋ผ๋ด๊ธฐ, ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ ๋ช ๋ น์ ์ ๊ณตํ ์ ์์ต๋๋ค. Selection(์ ์ฒด ๋ฌธ์๋ฟ๋ง ์๋๋ผ)์ OpenDoc ๋๋ ์์ ํ๋๋ฅผ ์ด๋ํ๊ธฐ ์ํ ๊ฐ์ ์ ๊ณตํ๋ ๋ค๋ฅธ ๋ฌธ์๋ก ์ด๋ํฉ๋๋ค. ๋ํ ์ด์ ์ฝ์ ์ง์ ์ด OpenDoc ๋๋ OLE ๊ตฌ์ฑ์์๋ฅผ ์ข ์ด ํ ์ดํ์ ๋ด์ฅํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด ์์ ๊น์ง, ํค์์ ์ค์ ์ด์์ ๊ฐ๋ฐ์๊ฐ ์ ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ด ๋ช ๋ น๊ณผ ํจ๊ป ๊ตฌํ๋๋ฉด ๊ณ์ฐ๊ธฐ ์์ ์ด ์คํ ์ทจ์ ๋ฐ ๋ค์ ์คํ๋๋ฏ๋ก ์ข ์ด ํ ์ดํ๊ฐ ๋ค๋ก ์คํ๋ ์ ์์ต๋๋ค. ์ด ๋ช ๋ น์ ๋์ค์ ๋ค์ ์ฌ์ํ ์ ์๋๋ก ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์ ๋ ฅ์ ํ์ฉํ๋ ์ผ์ ์ค๋จ์ด ์์ ์ ์์ต๋๋ค. ๋ํ ๋ช ๋ น์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋์ผํ ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ค๋ฅธ ์์คํ ์ผ๋ก ๋ถ์ฐํ์ฌ ๋ ๋ช ์ด์์ ์ฌ์ฉ์๊ฐ ์ค์๊ฐ์ผ๋ก ๊ณต๋ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ๋๊ตฌ๋ ํค๋ฅผ ๋๋ฅผ ์ ์๊ณ ๋ชจ๋๊ฐ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ๋ ๋ง์ Interactor๋ฅผ ์ธ์คํด์คํํ๊ฑฐ๋ ์ฌ์ง์ด ๋ง๋ค๊ธฐ ์์ํ๋ค๋ฉด, ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํค๋ณด๋ ๋ฑ๊ฐ๋ฌผ์ ํค๋ณด๋์ ์ซ์ ํคํจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ถ๊ฐ ๋ฒํผ๊ณผ ๊ธฐ๋ฅ์ ๊ณผํ ๋๋ ์ฌ๋ฌด ๊ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ฉ๋ด ํญ๋ชฉ์ ๊ณ์ฐ๊ธฐ ๋ฒ ์ด์ค๋ฅผ 10์ง์์์ 16์ง์ ๋๋ 8์ง์๋ก ๋ณํํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฉ๋ด ํญ๋ชฉ์ ๊ณ์ฐ๊ธฐ์ ๋ก์ผ์ผ์ ๋ณ๊ฒฝํ์ฌ ๋ค๋ฅธ ์ซ์ ๋๋ ํตํ ์์คํ ์ ํ์ฑํํ ์ ์์ต๋๋ค(Taligent์ International Frameworks ์ฌ์ฉ). ์ด๋ ์ซ์ ๋๋ ํตํ ์ ๋ ฅ ๋๋ ํ์์ ๋ํ ์ถ๊ฐ ์ฝ๋ ์์ด ์ํํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๋ ์ ๋ฌธ์ ์ธ ์ํธ์์ฉ์๋ฅผ ๋ง๋ค์ด ์ผ์ฌ์ฐฌ ๊ฐ๋ฐ์๋ค์ ํ ์ ๋ ฅ๊ณผ ์์ผ๋ก ์ด ์ซ์ ์ ๋ ฅ์ ์ง์ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ๋จ์ํ ๊ณ์ฐ๊ธฐ์ ๋นํด ์ง๋์น ๊ฒ์ฒ๋ผ ๋ณด์ผ ์๋ ์์ง๋ง, ์ด๋ฌํ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ด ๋งค์ฐ ์ํธ ์์ฉ์ ์ด๊ณ ๋ฌธ์ ์ค์ฌ์ ์ด๋ฉฐ, ์ฐ๊ฒฐ ๊ฐ๋ฅํ๊ณ , ์ฐ๊ฒฐ ๊ฐ๋ฅํ๊ณ , ์คํฌ๋ฆฝํ ์ด ๊ฐ๋ฅํ๊ณ , ํ์ ์ด ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ ์ ๋ง๋ค ๋ ์ผ๋ง๋ ๊ฐ๋ ฅํ์ง ์์ํด ๋ณด์ญ์์ค. MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ ์ถ์ํ๋ฅผ ํตํด ์ด๋ฌํ ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค.
Client/Server
ํ ๊ฐ์ง ๋ ๋ ผ์ํ ์ฃผ์ ๊ฐ ์์ต๋๋ค. ์ฆ, MVP ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ/์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ/์๋ฒ ๋ฒ์ ์ ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ์์ ๊ตฌํ๋๋ MVP ์ถ์ํ ์ค ์ ์ฒด ๋๋ ์ผ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ํฌํจํ๋ค. ๊ฐ์ฅ ์ ํต์ ์ธ ํด๋ผ์ด์ธํธ/์๋ฒ ๋ถํ ์ Presenter๋ฅผ ๊ฐ์ํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค. ๋ชจ๋ธ, ์ ํ ๋ฐ ๋ช ๋ น์ ์ผ๋ฐ์ ์ธ ์๋ฒ์ธก ๊ธฐ๋ฅ์ ๋ํ๋ ๋๋ค. ๋ณด๊ธฐ ๋ฐ ์ํธ ์์ฉ๊ธฐ๋ ์ผ๋ฐ์ ์ธ ํด๋ผ์ด์ธํธ ์ธก ๊ธฐ๋ฅ์ ๋ํ๋ ๋๋ค. ๊ทธ๋ฐ ๋ค์ Presenter๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๊ฒฝ๊ณ๋ฅผ "์คํธ๋๋ฉ"ํฉ๋๋ค. ์ฆ, ์ฝ๋๊ฐ ์์ชฝ ์ธก๋ฉด์ ๋ชจ๋ ๋ํ๋ ํ๋์ ๊ฐ๋ ์ Presenter๋ฅผ ๋ํ๋ ๋๋ค. ๋๋ถ๋ถ์ Presenter ์ฝ๋๋ "fat client"์์ ํด๋ผ์ด์ธํธ ์ธก์ ์์ ์ ์์ผ๋ฉฐ, ๊ฐ๋จํ ์๋ฒ์ธก Presenter์๊ฒ SQL์ ์ ๋ฌํ๋ค. ๋ฐ๋๋ก, ๋๋ถ๋ถ์ Presenter ์ฝ๋๋ ํด๋ผ์ด์ธํธ์ธก์์ "์ฌ" GUI ์ ํ๋ฆฌ์ผ์ด์ ๋ง ์ฌ์ฉํ์ฌ ์๋ฒ ์ธก์ ์์ ์ ์์ต๋๋ค. ๋ถํ ์ ํน์ฑ์ ๋ถ๋ถ์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ๊ฒฝ๊ณ๋ฅผ ๊ฐ๋ก์ง๋ฌ ์ด๋ค ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ๋ก ์ ํํ๋์ง์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด RPC, DCE, SQL, CORBA ๋ฑ์ด ์์ต๋๋ค.
๋ณด๋ค ์ ๊ตํ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์์ชฝ์์ MVP ์ถ์ํ ์ค ์ผ๋ถ ๋๋ ์ ๋ถ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์๋ "๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ" ์์ ๊ฐ์ด ์๊ฒฉ ๋ฐ์ดํฐ ์๋ฒ์ ํต์ ํ๋ "๋์ฉ" ๋๋ "ํ๋ก์" ๋ชจ๋ธ์ด ์์ ์ ์์ต๋๋ค. ๋ํ MVP์ ํจ๊ป ๊ตฌํ๋๋ ์๊ฒฉ ๋ฐ์ดํฐ ์๋ฒ๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ์ง์ ํ์ฌ ๊ณ์ธต์ผ๋ก ์ด๋ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ์์ฉํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ์ธก ์ค์ ๋ณด๊ธฐ์ ์ ๋ฐ์ดํธ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๋ ๋ณด๊ธฐ ์๋ ์์ฉํ๋ก๊ทธ๋จ์ผ ์ ์์ต๋๋ค. ํต์ฌ ์์ด๋์ด๋ ์ํ๋ ํด๋ผ์ด์ธํธ/์๋ฒ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋์์ MVP์ ์ผ๋ถ ๋๋ ์ ๋ถ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
Multiple versions of client/server
์ค์ ๋ก MVP ์ถ์ํ๋ฅผ ์ฌ๋ฌ ์์น์ ๊ณ ๋ คํ๊ณ ํด๋ผ์ด์ธํธ ์ธก, ์๋ฒ ์ธก ๋๋ ๋ถํ ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ฐฐ์นํ๋ ๊ฒ์ ๊ด๋ฒ์ํ ์ธ๊ธฐ ์๋ ํด๋ผ์ด์ธํธ/์๋ฒ ์๋ฃจ์ ์ ํด๋น๋ฉ๋๋ค. ๋ชจ๋ธ๋ง ์๋ฒ์ ์๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ "fat client"๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ์๊ฒฉ ๋ฐ์ดํฐ ์ ์ฅ์ ๋๋ ํ์ผ ์๋ฒ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ(๋ชจ๋ธ)๋ง ์ถ์ํํ๋ OODB์ ํด๋นํฉ๋๋ค. Model ๋ฐ Selection์ด ์๋ฒ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๊ธฐ๋ณธ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๊ฐ ์ํํ๋ ์์ ๊ณผ ์ผ์นํฉ๋๋ค. SQL์ "SELECT" ๋ช ๋ น์ ์ค์ ๋ก ์ฒ๋ฆฌ๋ฅผ ์ํด ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ค์ ์์ด์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ํ๋๋ ์ฒ๋ฆฌ(๋ช ๋ น)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ชฝ์ ๋ชจ๋ธ, ์ ํ ๋ฐ ๋ช ๋ น์ด ์๋ฒ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ช ๋ น ์ฒ๋ฆฌ๋ฅผ ์๋ฒ๋ก ์ด๋ํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฅ๋ ํ๋ก๊ทธ๋จ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋๋ ๋ค๋ฅธ ๋ ๋ฒจ์ ํธ๋์ญ์ ์๋ฒ๋ฅผ ๋ชจ๋ธ๋งํ์ต๋๋ค. ์ด์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ ์คํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ช ๋ น์ ์์ฒญํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทน๋จ์ผ๋ก ์น์ฃ . ๋ณด๊ธฐ๋ง ํด๋ผ์ด์ธํธ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ฐ๋จํ ๋งํด, ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์ฒญํ ํฐ๋ฏธ๋์ด ํ๋ ์ผ์ด๋ ์๊ฒฉ ๋ณด๊ธฐ๋ฅผ ํ์ฉํ๊ธฐ ์ํด X Window ์๋ฒ๊ฐ ์ํํ๋ ์ผ ๋๋ ๊ฐ๋จํ ํ๋ฉด ๊ณต์ ์ ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ณด๊ธฐ์ผ ๋ฟ์ด๊ณ ๋ค๋ฅธ ๋ชจ๋ ์์ ์ ์๋ฒ์์ ์ํ๋ฉ๋๋ค. ๋ณด๊ธฐ์ ์ธํฐ๋ ํฐ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ง๋ง ๋ชจ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ(ํ๋ ์ ํฐ)๊ฐ ์๋ฒ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ณธ์ง์ ์ผ๋ก ์ค๋๋ ์ ์ผ๋ฐ์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ด ํ๋ ์ผ์ ๋๋ค. ๋ณด๊ธฐ๋ ๋ธ๋ผ์ฐ์ ์์ ๋ ๋๋ง๋๋ HTML ํ์ด์ง์ด๋ฉฐ ๋ํ์๋ ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ฌ HTML ๋งํฌ ๋๋ ์์ ๊ธฐ๋ฐ ์ ๋ ฅ ํ๋ ๋ฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์คํ, ๋น์ฆ๋์ค ๋ก์ง, ๋ช ๋ น ๋ฐ ๋ฐ์ดํฐ๋ ์น(HTTP) ์๋ฒ์ ์์ต๋๋ค.
Java ์ง์ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ์์ ์คํํ๊ธฐ ์ํด ์ผ๋ถ ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์์์ด๋ฉฐ, ๋ฐ๋ผ์ Presenter ์ค ์ผ๋ถ๋ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ฉ๋๋ค. ๋ชจ๋ ๋ ผ๋ฆฌ๊ฐ ์๋ฒ ์ธก์ ๋จ์์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ธฐ์กด์ ์๋ฒ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ง๊ณ ์๋ค. ๋ชจ๋ ๋ ผ๋ฆฌ๊ฐ ํด๋ผ์ด์ธํธ ์ชฝ์์ ์งํ๋๋ค๋ฉด, ์ฐ๋ฆฌ๋ ์ ํต์ ์ธ PC ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ง๊ณ ์๋ค. ๋ถํ ๋ ๊ฒฝ์ฐ, ๊ธฐ์กด์ ๋ถ์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ต๋๋ค. ์ ์ ํ ์ฅ์์์ ๋ ๋ฒ ๋ถํ ํ๋ฉด ๊ธฐ์กด์ 3๊ณ์ธต ์ ํ๋ฆฌ์ผ์ด์ ์ธ ์ฌ GUI ํด๋ผ์ด์ธํธ, ์ค๊ฐ ๊ณ์ธต ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง, ๋ฐฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค. ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ ์ผ๊ณฑ ๋ฒ์งธ์ด์ ๋ง์ง๋ง ์ค๊ณ ์ง๋ฌธ์ "ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถํ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?"์ ๋๋ค. ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ๋ชจ๋ ์ ์ฌ์ฑ์ ์๋์ ์ผ๋ก ํผ์์ ์ด๋ฉฐ, ์ฌ๊ฐํ ํด๋ผ์ด์ธํธ/์๋ฒ ๋ฐ ๋ค์ค ๊ณ์ธต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์์ค์ ์ถ์ํ ๊ฐ์ ํจ์ฌ ๋ ์ ๊ตํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์น์ํ ๊ด๋ฒ์ํ ํด๋ผ์ด์ธํธ/์๋ฒ ์ํคํ ์ฒ๊ฐ MVP ๋ชจ๋ธ ๋ด์์ ๊ฐ๋จํ ๋ณํ์ผ๋ก ๋ชจ๋ธ๋ง๋ ์ ์์์ ๋ถ๋ช ํ๋ค. ์ด๋ MVP ๋ชจ๋ธ์ด ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ์ ๊ณตํต์ ์ธ ๊ธฐ๋ณธ์ ์ด๊ณ ํํ์ ์ธ ์ถ์ํ๋ฅผ ์บก์ฒํ๋ค๋ ๋์ ์ ๋ขฐ๋๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฌํ ์ด์ ๋ก, ์ฐ๋ฆฌ๋ MVP ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๊ธฐ๋ณธ ์ค๊ณ ํจํด์ด๋ผ๊ณ ๋ฏฟ๋๋ค.
์ถ์ํ์ ์ด์
์ฐ๋ฆฌ๋ MVP ๊ฐ๋
์ด ๋ง์ ์ข
๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ธ๋งํ๊ธฐ์ ์ถฉ๋ถํ๋ค๋ ๊ฒ์ ์
์ฆํ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ชจ๋ ๊ตฌ๋ณ์ด ๊ทธ๋ค์ด ๊ฐ์ ธ์ค๋ ์ด์ต์ ์ํด ํ์ํ๊ณ ์ ๋นํ๋๋์ง ๊ฒํ ํ๋ ๊ฒ. ์ด๋ฅผ ์ํด MVP ์ผ๊ฐ๋ง ๋ด์ ์ธ์ ํ ๊ฐ ์ถ์ํ ์์ ๋ํด ์ด ์ฐจ์ด๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐ ๊ฐ์น๊ฐ ์๋๊ฐ?
๋ผ๊ณ ๋ฌผ์ ์ ์์ต๋๋ค.
Model/View ๊ตฌ๋ถ์ View ๋ ๋ฆฝ์ฑ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ก ๋ค๋ฅธ ๊ณ์ฐ๊ธฐ ๋ ์ด์์(๋ค๋ฅธ ์์ค์ ๊ธฐ๋ฅ, ๋ฐฐ์ด, ๊ณ์ฐ๊ธฐ์ ๋ค๋ฅธ "๋ธ๋๋")์ ๋ชจ๋ ๋์ผํ ๊ธฐ์ด ๊ณ์ฐ๊ธฐ ์์ง ๋ฐ ๋ฐ์ดํฐ ํํ์ ๋ํด ์๋ก ๋ค๋ฅธ ๋ณด๊ธฐ๋ก ํ๋ก๊ทธ๋๋ฐํ ์ ์์ต๋๋ค.
Selection/Model ๊ตฌ๋ถ์ ๋ชจ๋ธ ๋ ๋ฆฝ์ฑ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ธ ๋ ๋ฆฝ์ฑ์ ํตํด ๊ฐ๋ฐ์๋ ๋๋จธ์ง ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๊ฐ ํ์๋๊ฑฐ๋ ์ฒ๋ฆฌ๋๋ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋๋ ํ์ผ ํ์์ ๋ณ๊ฒฝํ๊ณ ๋ฐ์ ์ํฌ ์ ์์ผ๋ฉฐ ์ง์์ฑ, ์๊ฒฉ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ฐ ๊ณต์ ๋ฅผ ๋์ ํ ์ ์์ต๋๋ค.
Command/Selection ๊ตฌ๋ถ์ ๋ช ๋ น ์ฌ์ฌ์ฉ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ ์ฝ๋์์ ๊ฐ ๋ฐ์ดํฐ ์์์ ๋ํ ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ , ๋จ์ผ ๋ช ๋ น์ ๋ชจ๋ธ์ ์๋ ํ๋, ์ฌ๋ฌ ๊ฐ ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ ์์์ ์ ํ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ผ๋จ ๊ตฌํ๋๋ฉด, ๋ช ๋ น์ ๋ค๋ฅธ Presenter๊ฐ ์ฌ๋ฌ ์์ฉํ๋ก๊ทธ๋จ์์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธฐ๋ณธ ๋๋ ํตํ ๋ณํ ๋ช ๋ น์ ๋ฌธ์์ ๋ฒํธ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก CommonPoint ์์คํ ์ ๋ชจ๋ ๋ฌธ์์ ํ์ด ์์ฑ๋๊ณ , ๊ธ๊ผด ์ ํ ๋๊ตฌ๊ฐ ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ ์ ํ๊ธฐ๊ฐ ์์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ฒ ์ ๊ฒ์ฌ๊ธฐ๊ฐ ํ ์คํธ๋ฅผ ๊ฒ์ฌํ ์ ์๋ ๋ฑ์ ๊ธ๋ก๋ฒ ๋๊ตฌ๋ฅผ ์ง์ํฉ๋๋ค.
Interactor/View ๊ตฌ๋ถ์ ์ ๋ ฅ ์ผ๋ฐ์ฑ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์์ฉํ๋ก๊ทธ๋จ ๋ก์ง์ด๋ ๋ฐ์ดํฐ ๋ ๋๋ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๋ค์ํ ๋ฉ๋ด, ๋ํ ์์, ํค๋ณด๋ ๋ฑ๊ฐ๋ฌผ, ์ ์ค์ฒ ๋๋ ํ๊ธฐ/ํ ์ ๋ ฅ์ ์ง์ํ ์ ์์ต๋๋ค. Commands ๋ฐ Interactors์์ Presenter๋ฅผ ๊ตฌ๋ณํ๋ฉด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Logic์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ํน์ ๋์คํ๋ ์ด ๋๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ธ๋ถ ์ ๋ณด์์ ์ถ์ํํ๋ฉด ํ๋ก๊ทธ๋จ ๋ก์ง๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ ๋ณํ์ด๋ ๋ณตํฉ์ ์ง๋ถ๊ณผ ๊ฐ์ ์ฌ๋ฌด์ ๊ณ์ฐ๊ณผ ๊ฐ์ ๊ณผํ์ ๊ณ์ฐ์ ๋ค๋ฅธ ๋งฅ๋ฝ์์ ์ฌ์ฌ์ฉํ ์ ์๋ค. ๋ง์ง๋ง์ผ๋ก, ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ MVP ์ถ์ํ๋ฅผ ๊ตฌํํ๋ฉด ํ๋ซํผ ๊ฐ ์ด๋์ฑ, ๋ค์ค ํ์ค(์: OpenDoc, OLE, ...), ๋ฐฐํฌ ๋ฐ ๋ค์ค ๊ณ์ธต ํํฐ์ ๋์ด ์ฉ์ดํด์ง๋๋ค.
Summary
Taligent์ IBM์ MVP(Model-View-Presenter)๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ชจ๋ธ์ ํ๋ก๊ทธ๋๋ฐํ ์ ์์ต๋๋ค. Taligent์ VisualAge 4.0์ฉ Open Class ๊ตฌํ์ ์ฌ๋ฌ OS ํ๋ซํผ์์ C++์ฉ MVP๋ฅผ ์ง์ํ ๊ฒ์ ๋๋ค. Taligent๋ ๋ํ ํ์ค Java ํ๊ฒฝ์์ ์คํ๋ ๋งค์ฐ ๊ฒฝ๋ ๋ฒ์ ์ MVP๋ฅผ ๊ตฌํํ๊ณ ์๋ค. MVP๋ ๊ธฐ๋ณธ์ ์ผ๋ก Smalltalk์ MVC ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ผ๋ฐํํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก, IBM์ ์ฃผ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ MVP์ ๊ฐ๋ฐ์ ์ค๋๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฑธ์ณ ํตํฉ๋ ๊ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
์๋ณธ
MVP: Model-View-Presenter The Taligent Programming Model for C++ and Java