๋์์ธ ํจํด
-
[Java] ๋์์ธ ํจํด(Composite ํจํด)์นดํ ๊ณ ๋ฆฌ ์์ 2021. 5. 18. 00:45
์ด ๊ธ์ "์ํํ ์ฝ๋ฉ์ฌ์ ๊ฐ์ฒด์งํฅ ๋์์ธํจํด Youtube ์์"์ ๋ณด๊ณ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค. Composite ํจํด์ด๋? Composite ํจํด์ ๋ณต์กํ ์ค๊ณ๋ฅผ ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ํจํด์ผ๋ก ์ปดํจํฐ ํ์ผ ์์คํ ์ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์ปดํจํฐ ํ์ผ ์์คํ ์์๋ ํด๋ ๋ด๋ถ์ ํ์ผ๋ ๋ค์ด๊ฐ ์ ์์ง๋ง, ํด๋ ์์ฒด๋ ๋ค์ด๊ฐ ์ ์์ต๋๋ค. ๋ํ, ํ์ผ๊ณผ ํด๋๋ ๋ค๋ฅธ ์กด์ฌ์ง๋ง ๊ฐ๊ฐ ํฌ๊ธฐ๊ฐ ์กด์ฌํ๊ณ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ, ์ญ์ ํ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ ๊ณตํต์ ์ผ๋ก ์ฃผ์ด์ง๋๋ค. ์ด์ฒ๋ผ Composite ํจํด์ ํฌํจ๋๋ ๊ฐ์ฒด์ ํฌํจํ๋ ๊ฐ์ฒด๊ฐ ๋์ผํ๊ฒ ๋ค๋ค์ง ๋ ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. Composite ์ฌ์ฉ public interface FileSystem { int getSize(); void printInfo(); } Fil..
-
[Java] ๋์์ธ ํจํด(Mediator ํจํด)Android/Java 2021. 5. 18. 00:14
Mediator ํจํด์ด๋? Mediator ๋ง ๊ทธ๋๋ก ์ค์ฌ์๋ก์, ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์์ ์ฐ๊ฒฐ์ฑ์ ์ง์ ํ๋ ๊ฒ์ด ์๋ ์ค์ฌ์๋ฅผ ํตํด ์ฐ๊ฒฐํ๋ ํจํด์ ๋๋ค. ํ์ฌ์ ์๊ธ์๊ฐ ๋น์๋ฅผ ํตํด ๋ค๋ฅธ ์ง์๋ค์๊ฒ ์๊ธ์์ ์๊ฒฌ์ ๋ชจ๋์๊ฒ ์ ๋ฌํ๋ฏ, ํด๋์ค๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋์๊ฒ ์ผ์ผ์ด ์ ๋ฌํ๋ ๊ฒ์ด ์๋ Mediator๊ฐ ์ํํ๋๋ก ๋ง๋๋ ํจํด์ ๋๋ค. Mediator ํจํด์ ์ค๋ช ํ๊ธฐ ์ ์ Mediator ์ฌ์ฉํ๊ธฐ ์ ์ ์ฝ๋์ ๋ถํธํจ์ ์ ์๊ณ ๋๋ฉด ๋ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. public interface Subject { void isTimetoSubject(String type); } Subject๋ผ๋ ์ธํฐํ์ด์ค๋ type์ ํด๋นํ๋ ๊ณผ๋ชฉ์ ๋ฃ๋ ์๊ฐ์ด ๋ง๋์ง์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๊ตฌํ๋๋ isTimetoSubject ๋ฉ์๋..
-
[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] ๋์์ธ ํจํด(Proxy ํจํด)Android/Java 2021. 5. 14. 01:28
Proxy ํจํด์ด๋? ํด๋์ค๋ฅผ ์์ฑ ์์ ๊ฐ๋ฒผ์ด ์์ ์ ๋ํ ๋ฉ์๋๋ ์คํํ๋, ๋ฌด๊ฑฐ์ด ์์ ์ผ ๊ฒฝ์ฐ ๋ค๋ฅธ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์คํํ๋ ํจํด์ ๋๋ค, ์ฆ, ๋๋ฆฌ์ธ(Proxy) ์ญํ ํ ์ ์๋ ํด๋์ค๊ฐ ๊ฐ๋ฒผ์ด ์์ ์ ์คํํ๋ค๊ฐ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ค๋๊ฐ, ๋์์ ์ฌ์ ์์๋ ์ฃผ์ ํด๋์ค๊ฐ ์คํํ๋๋ก ํฉ๋๋ค. Proxy ํจํด์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฌด๊ฑฐ์ด ์์ ์ ํด์ผํ ๊ฒฝ์ฐ์๋ง ํด๋์ค๋ฅผ ์์ฑํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Proxy ํจํด ์ฌ์ฉ public interface Scorer { void multipleChoice(); void shortAnswer(); } Scorer ์ธํฐํ์ด์ค๋ ๊ฐ๊ด์๊ณผ ์ฃผ๊ด์์ ์ฑ์ ํ ์ ์๋ ์ฑ์ ๊ด์ ๋ปํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ๊ฐ๊ด์์ ์๋์ ์ผ๋ก ์ ๋ต์ด ์์ผ๋ฉด ์ฝ๊ฒ ์ฑ์ ํ ..
-
[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] ๋์์ธ ํจํด (Factory ํจํด)Android/Java 2021. 1. 5. 09:43
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค. Factory ํจํด์ด๋? Builder ํจํด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด์ ๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. Factory ํจํด์ ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ก ์ ์ธ์ ํ๊ณ ๋ด๋ถ์์๋ ์ด๋ค ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋์ง ๋ชจ๋ฅด๋๊ฒ ํต์ฌ์ ๋๋ค. ์ฆ, ํด๋์ค์ ์ธ์คํด์ค๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ง์ฝ ๊ตฌ์ ํด๋์ค (new๋ก ์ง์ ์์ฑ)๋ฅผ ๊ธฐ๋ฐํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋์ค์ ์ฝ๋ ์์ ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. ์๋๋ก์ด๋์์ ์๋ก์ด Fragment๋ฅผ ์์ฑํ ๋, Factory ํจํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด import ํ์ง ์์๋ ๋์ด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ..
-
[Java] ๋์์ธ ํจํด (Builder ํจํด)Android/Java 2021. 1. 3. 21:55
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค. Builder ํจํด์ด๋? ์๋๋ก์ด๋, ์๋ฐ ๊ฐ๋ฐ์ ํ ๋ ์์ฃผ ์ฐ์ด๋ ํจํด ์ค ํ๋์ ๋๋ค. Builder ํจํด์ ํด๋์ค ์์ฑ ํจํด์ผ๋ก ๋ฉค๋ฒ ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ค์ํ ์์ฑ์๊ฐ ํ์ํ๋ค๋ ๋จ์ ์ ํด๊ฒฐํ ์ ์๋ ํจํด์ ๋๋ค. Builder ํจํด์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์์ง๊ณ ์ ์ง๋ณด์๋ฅผ ํธ๋ฆฌํ๊ฒ ํ ์ ์์ต๋๋ค. ๋ํ, ๊ฐ์ฒด ์์ฑ๋ ๊น๋ํ ํ ์ ์์ต๋๋ค. ์๋๋ก์ด๋์์ NotificationCompat์ ์๋ฐ์์ StringBuilder์์ Builder ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. Builder ํจํด ์ฌ์ฉ Student ๊ฐ์ฒด์ Builder ํจํด์ ์ฌ์ฉํ์์ต๋๋ค. ์๋ Student์ ์ ๋ณด( ํ๋ฒ..