Design Pattern
-
[Java] ๋์์ธ ํจํด(Template ํจํด)Android/Java 2021. 5. 17. 22:13
Template ํจํด์ด๋? ๋ํ์์ด๋ผ๋ฉด PPT๋ก ๋ฐํํ ๊ฒฝํ์ ์์ ๊ฒ์ ๋๋ค. PPT ๋ฐํ ์๋ฃ๋ฅผ ์ง์ ๊พธ๋ฉฐ์ ๋ง๋๋ ํ์๋ ์์ ์ ์๊ฒ ์ง๋ง, ๋์์ธ ๊ฐ๊ฐ์ด ์๋ ์ฌ๋์๊ฒ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ด ๋, ๋๋ถ๋ถ์ PPT ํ ํ๋ฆฟ์ ๊ฒ์ํ์ฌ ํ ํ๋ฆฟ์ ๋ด์ฉ๋ง ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์๋ฃ๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค. ์ด์ฒ๋ผ Template ํจํด์ด๋ ์ ๋ฐ์ ์ธ ๊ณผ์ ๊ฐ์ ํฐ ํ๋ง ์ฃผ์ด์ง๊ณ , ์ธ๋ถ์ ์ธ ๋ฉ์๋๋ค์ ์ํ๋ ์คํ์ผ์ ๋ง๊ฒ ๊ตฌํํ๋ ํจํด์ ๋๋ค. ์ ๋ฐ์ ์ธ ๊ณผ์ ์์ ๊ณตํต๋ ์ ์ฐจ๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์ธ ํจํด์ ๋๋ค. Template ์ฌ์ฉ public abstract class Movie { protected abstract void connectMovieServer(); protected abstract void down..
-
[Java] ๋์์ธ ํจํด(Decorator ํจํด)Android/Java 2021. 1. 8. 11:14
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค. Decorator ํจํด์ด๋? ์์ ํด๋์ค๋ฅผ ์ค์ ์ผ๋ก ์์๊ณผ ํฉ์ฑ์ ์ด์ฉํ์ฌ ํฐ ํด๋์ค๋ฅผ ๋ง๋๋ ํจํด์ ๋๋ค. ์ค์ฌ๋๋ ํด๋์ค๋ ๋ณ๊ฒฝ ์์ด ์ถ๊ฐ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์์์ ํ๋ฉด์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ ๋ฐฉ์์ ๋๋ค. ๋ชจ๋ฐ์ผ UI ๊ฐ๋ฐ์ ์ฃผ๋ก ๋ง์ด ํ์ฉ๋๋ ์๋ ํจํด์ ๋๋ค. Decorator ์ฌ์ฉ public abstract class Widget { public abstract int getColumns(); public abstract int getRows(); public abstract String getRowText(int row); public void show(){ for (int i = 0; i < getRo..
-
[Java] ๋์์ธ ํจํด(Adapter ํจํด)Android/Java 2021. 1. 7. 20:19
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ ๊ธ์ ๋๋ค. Adapter ํจํด์ด๋? ํ๋์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฅธ ํด๋์ค์ ์ธํฐํ์ด์ค๋ก ๋ณํํ ๋ ์ฃผ๋ก ์ฐ๋ ํจํด์ ๋๋ค. ์ด๋ ์ ๋ ๊ท๋ชจ๊ฐ ์๋ ๋ด๋ถ ์์คํ ์์ ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ฉํ๋ ค๊ณ ์ธํฐํ์ด์ค๋ฅผ ๋ชจ๋ ์์ ํ๋ ๊ฒ์ ์ฌ์ค์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ด ๋ ๊ธฐ์กด์ ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฅธ ํด๋์ค์ ์ธํฐํ์ด์ค๋ก ๋ณํํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฆ ๊ทธ๋๋ก ์ ๊ธฐ ์ด๋ํฐ๋ผ๊ณ ์๊ฐํ์ฌ ๋ค๋ฅธ ์ ๊ธฐ๋ ๊ธฐ๊ณ์ฅ์น๋ฅผ ์๋ก ์ฐ๊ฒฐํด์ ์๋ํ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ธ ๊ฒ์ฒ๋ผ Adapter ํจํด๋ ๋น์ทํ๊ฒ ์๋ํฉ๋๋ค. ์๋๋ก์ด๋์์๋ Adapter ํจํด์ ์์ฃผ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ex) ListView, RecyclerView .. Adapter ํจํด ์ฌ์ฉ public in..
-
[Java] ๋์์ธ ํจํด (Singleton ํจํด)Android/Java 2021. 1. 5. 22:50
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค. Singleton ํจํด์ด๋? ์ด ํจํด์ ์ฃผ๋ก ์ธ์คํด์ค ์์ฑ์ ํ๋ฒ ํ ํ ์ ๊ตฌ์ญ์์ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. ์ด ํจํด์ ์ฌ์ฉํ๋ฉด ์ ์ญ ์ธ์คํด์ค์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ํด๋์ค์์ ๋๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ์ฌ๋ฌ ํด๋์ค์์ ์ฑ๊ธํค ์ธ์คํด์ค๊ฐ ํธ์ถ๋๊ณ ์ฌ์ฉ๋๋ค๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ฒฐํฉ๋๋ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. ๊ฒ๋ค๊ฐ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋๊ธฐํ ์์ ์ด ํ์์ ์ผ๋ก ์งํ๋์ด์ผ ํฉ๋๋ค. (์ฌ๋ฌ ์ธ์คํด์ค ์์ฑ ๊ฐ๋ฅ์ฑ์ด ์๋ค.) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ ๋จ ํ๋๋ก ์กด์ฌํด์ผ ์๋ฏธ๊ฐ ์์ ๋ ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์ ๋๋ค. Singleton ์ฌ์ฉ public class Singleto..
-
[Java] ๋์์ธ ํจํด (Factory ํจํด)Android/Java 2021. 1. 5. 09:43
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค. Factory ํจํด์ด๋? Builder ํจํด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด์ ๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. Factory ํจํด์ ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ก ์ ์ธ์ ํ๊ณ ๋ด๋ถ์์๋ ์ด๋ค ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋์ง ๋ชจ๋ฅด๋๊ฒ ํต์ฌ์ ๋๋ค. ์ฆ, ํด๋์ค์ ์ธ์คํด์ค๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ง์ฝ ๊ตฌ์ ํด๋์ค (new๋ก ์ง์ ์์ฑ)๋ฅผ ๊ธฐ๋ฐํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋์ค์ ์ฝ๋ ์์ ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. ์๋๋ก์ด๋์์ ์๋ก์ด Fragment๋ฅผ ์์ฑํ ๋, Factory ํจํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด import ํ์ง ์์๋ ๋์ด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ..