๋ช ๋ น ํจํด์ ์์ฒญ์ ๊ฐ์ฒด๋ก ์บก์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ์์ ๋๋ฆฌ ์ธ์๋๊ณ ํ์ฉ๋๋ ๋์ ๋์์ธ ํจํด์ผ๋ก, ๋ค์ํ ์์ ๊ณผ ์์ฒญ์ด ๋งค๊ฐ๋ณ์ํ๋์ด ๋ค์ํ ์๊ฐ๊ณผ ๋ค์ํ ํ์์์ ์ํด ์ํ๋ ์ ์๋๋ก ํฉ๋๋ค. ์ด ํจํด์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ๊ฐ์ฒด์์ ์์ ์ ์์ํ๋ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ฝ๊ฒ ์คํ ์ทจ์ํ๊ฑฐ๋ ๋ค์ ์คํํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ๋ณ ์์ ์ ๊ตฌํํ ์ ์๋๋ก ํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
๊ฐ ์์ฒญ์ด๋ ์์ ์ ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ก ํน์ฑํํจ์ผ๋ก์จ ๋ช ๋ น ํจํด์ ํฅ์๋ ๋ชจ๋์ฑ, ํ์ฅ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํ์ฉํฉ๋๋ค. ์ด ํจํด์ ์ฌ์ฉ์ ์์ ์ด UI ๊ตฌ์ฑ ์์์ ์ฝ๊ฒ ๋ฐ์ธ๋ฉ๋ ์ ์๋ ๋ช ๋ น ๊ฐ์ฒด๋ก ํ์๋๋ GUI(๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๋ํ ERP(์ ์ฌ์ ์์ ๊ด๋ฆฌ) ์ํํธ์จ์ด๋ ์ํฌํ๋ก ๊ด๋ฆฌ ์์คํ ๊ณผ ๊ฐ์ ๋ณด๋ค ๋ณต์กํ ์์คํ ์์๋ ๋ช ๋ น ํจํด์ ์ฌ์ฉํ์ฌ ์์ ๋ฐ ํ๋ก์ธ์ค์ ์์๋ฅผ ๋ชจ๋ธ๋งํ๊ณ ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Command Pattern์ ์ผ๋ฐ์ ์ธ ๊ตฌํ์๋ Command ์ธํฐํ์ด์ค, ConcreteCommand ํด๋์ค, Receiver ํด๋์ค ๋ฐ Invoker ํด๋์ค์ ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. Command ์ธํฐํ์ด์ค๋ ๋ช ๋ น ๊ฐ์ฒด๊ฐ ์ํํ ์์ ์ ์บก์ํํ๊ณ ์ ์ํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ConcreteCommand ํด๋์ค๋ Command ์ธํฐํ์ด์ค์์ ์์๋๋ฉฐ, ์ ์ ํ ๊ธฐ๋ฅ์ผ๋ก ์คํ() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ํน์ ์์ ์ ๊ตฌํํฉ๋๋ค. Receiver ํด๋์ค๋ ์์ฒญ๋ ์์ ์ ์ํํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ ๊ฐ ConcreteCommand ํด๋์ค๋ Receiver ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก Invoker ํด๋์ค๋ ๋ช ๋ น ๊ฐ์ฒด๋ฅผ ๋ณด์ ํ๊ณ ๊ด๋ฆฌํ์ฌ ์ํ๋ ์์๋ก ์คํํ๊ฑฐ๋ ๋์ค์ ์คํ ์ทจ์/๋ค์ ์คํ ๊ธฐ๋ฅ์ ์ํด ํธ์ถํ ์ ์๋๋ก ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ, ํธ์ง, ์ญ์ ํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ AppMaster ๊ณ ๊ฐ์ ์๊ฐํด ๋ณด์ญ์์ค. ๊ณ ๊ฐ์ ๋ช ๋ น ํจํด์ ๊ตฌํํ์ฌ ๋ณด๋ค ๋ชจ๋ํ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ์ค๊ณํ ์ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์ Command ์ธํฐํ์ด์ค๋ ์ง์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํํ๊ธฐ ์ํ Execute() ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ AddRecordCommand, EditRecordCommand ๋ฐ DeleteRecordCommand์ ๊ฐ์ ConcreteCommand ํด๋์ค๋ ์คํ() ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ํด๋น ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ช ๋ น ๊ฐ์ฒด๋ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํํ๋ DatabaseReceiver ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ApplicationInvoker ํด๋์ค๋ ๋ช ๋ น ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ์ฌ ๊ณ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ฌ์ ์ธ ์คํ ์ทจ์/๋ค์ ์คํ ๊ธฐ๋ฅ์ ๋ํด ์คํ๋ ๋ช ๋ น์ ์ถ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
๋ช ๋ น ํจํด์ ์ํํธ์จ์ด ์ค๊ณ์์ ๊ฐ๋ฐ์์๊ฒ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ํ ๊ฐ์ง ์ฅ์ ์ ๋ณธ์ง์ ์ผ๋ก ์์ ๊ณผ ์คํ์ ๋ถ๋ฆฌํ์ฌ ๋ช ๋ น์ ๋๋๋ฆฌ๊ณ ์ฌ์คํํ ์ ์์ผ๋ฏ๋ก ์คํ ์ทจ์ ๋ฐ ๋ค์ ์คํ ๊ธฐ๋ฅ์ ์์ฐ์ค๋ฝ๊ฒ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ํ ์ด ํจํด์ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์ ๋ช ๋ น์ ์ถ๊ฐํ ์ ์์ด ํ์ฅ์ฑ์ ์ด์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด์ AppMaster ์์ ์์ ๊ณ ๊ฐ์ ๋์ค์ ๊ธฐ์กด ConcreteCommand ํด๋์ค ๋๋ ํธ์ถ์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ViewRecordCommand ํด๋์ค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋ช ๋ น ํจํด์ ๋ํ ์ฝ๋ ๊ตฌ์ฑ, ๋ณต์ก์ฑ ๊ฐ์, ๋๋ฒ๊น ๋ฐ ํ ์คํธ ๋จ์ํ์ ๋ํ ๊ตฌ์กฐํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ด์งํฉ๋๋ค.
AppMaster ์ no-code ํ๋ซํผ์ ํตํด ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ ๋ณธ์ง์ ์ผ๋ก ๋ช ๋ น ํจํด ๋ด์์ ๋ฐ๊ฒฌ๋๋ ๋ชจ๋์ฑ, ํ์ฅ์ฑ, ๋ฌธ์ ๋ถ๋ฆฌ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ์์น์ ํ์ฉํ ์ ์์ต๋๋ค. AppMaster ์ ์๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ํ๋ก์ธ์ค, REST API ๋ฐ WSS ์๋ํฌ์ธํธ๋ฅผ ์ค๊ณํ๋ ๋์์ drag-and-drop ๊ธฐ๋ฅ์ ํตํด ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ UI ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๊ถ๊ทน์ ์ผ๋ก ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ๋ฉด์ ๊ณ ํ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ํจ์จ์ฑ, ํจ๊ณผ ๋ฐ ํ์ฅ์ฑ์ ๊ฐํํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋ช ๋ น ํจํด์ ์์ฒญ์ ๊ฐ์ฒด๋ก ์บก์ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ฑ ๋ชจ๋ํํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ์ ํ์ ๋์์ธ ํจํด์ ๋๋ค. ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ Command Pattern์ ํ์ฉํ๋ฉด ๊ฐ๋ฐ์์ ์ํํธ์จ์ด ์ค๊ณ์์๊ฒ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ ๊ฐ๋ฅํ ์์คํ ์ ๋ง๋๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. AppMaster ์ ํ๋ซํผ์ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ Command Pattern์ ํต์ฌ ์์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ์ฌ ํ์ง์ ์ ํํ๊ฑฐ๋ ์ฅ๊ธฐ์ ์ธ ์ง์ ๊ฐ๋ฅ์ฑ์ ์ง์ฐ์ํค์ง ์๊ณ ๋ ๋น ๋ฅด๊ณ ๋น์ฉ ํจ์จ์ ์ธ ๊ฐ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.