Android/Java
-
[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] ๋์์ธ ํจํด(Strategy ํจํด)Android/Java 2021. 5. 11. 23:31
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค. Strategy ํจํด ํด๋์ค ์ญํ ์ ๋๋ ทํ ํ์ฌ ๋ชจ๋ํ๋ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํจํด์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ ๋ํด ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ก ๊ตฌํํ์ฌ ํํํ๋ ํจํด์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ๋ค์ ๋ํด์ If, else if, else ์ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ๋์ฝ๋ฉํ์ฌ ๋ค๋ฅด๊ฒ ์์ฑํ๋ฉด ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์์๋ ๊ฐ์์ง ๋ชฐ๋ผ๋ ๊ฐ์ฒด์งํฅ ์์น์ด ์ด๊ธ๋๊ฒ ๋ฉ๋๋ค. ์ํ๋ ๋์์ด ์์ ๋ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ ํด๋์ค๋ก ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ์ถํ ์ ์ง๋ณด์์ ์์ ์ ์ฉ์ดํฉ๋๋ค. Strategy ํจํด ์ฌ์ฉ public class DeviceOS { public String type; public DeviceOS(String type) { thi..
-
[Java] ๋๋ค์์ด๋?Android/Java 2021. 3. 21. 23:06
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค. ๋๋ค์์ด๋? ๋๋ค์์ด๋ ํจ์๋ช ์ ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์๋ณ์ ์์ด ์คํ๊ฐ๋ฅํ ํจ์์ ๋๋ค. ์ ์ฐจํ ํ๋ก๊ทธ๋๋ฐ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ๋ ์ฌ๋ญ ๋ค๋ฅด๊ฒ ํจ์์ ๊ตฌํ๊ณผ ํธ์ถ๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ์์ธ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฐ 8๋ถํฐ ๋์ ์ด ๋์์ผ๋ฉฐ, ๋๋ค์์ ์ต๋ช ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ธ๋ฐ ์ต๋ช ํจ์๋ ์ผ๊ธ๊ฐ์ฒด ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ค์ ์ฌ์ฉ๋ฒ์ (๋งค๊ฐ๋ณ์, ....) -> { ์คํ๋ฌธ ... } ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ผ๊ธ๊ฐ์ฒด๋? ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ 1๊ธ๊ฐ์ฒด๋ผ๋ ๋ง์ ์์ฃผ ์ฌ์ฉํ๋๋ฐ, 1๊ธ๊ฐ์ฒด๊ฐ ๋ฌด์์ธ์ง ์ ๋ฆฌํ์์ต๋๋ค. Java์ Kotlin์ ๋น๊ต๋ฅผ ํตํด Kotlin ํจ์๋ 1๊ธ ๊ฐ์ฒด์ง๋ง, Java๋ 1๊ธ๊ฐ์ฒด๊ฐ ..
-
[Java] Java Generic(์ ๋ค๋ฆญ)Android/Java 2021. 3. 1. 15:43
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ์์ต๋๋ค. Generic์ด๋? Integerํ ๋ฐฐ์ด, Stringํ ๋ฐฐ์ด ๋ฑ๋ฑ ๋ฐฐ์ด์ ํฌํจ๋๋ ์์์ ํ์ ๋ง๋ค ์ถ๊ฐ, ์ญ์ , ์ ๋ ฌ๊ณผ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๋ช ๋นํจ์จ์ ์ผ ๊ฒ์ ๋๋ค. ์๋ฐ์ Generic์ ๋ฐ์ดํฐ์ ํ์ ์ ์ผ๋ฐํํ๋ค๋ ์๋ฏธ๋ก ํด๋์ค๋ ๋ฉ์๋ ์ ์ ์ ์ผ๋ฐํํ์ฌ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ์ปดํ์ผ ์์ ๋ฏธ๋ฆฌ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. JDK1.5 ๋ถํฐ Generic์ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, ์ปดํ์ผ ์ ํ์ ์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์, ํด๋์ค๋ ๋ฉ์๋ ๋ด๋ถ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ ํ์ ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. JDK1.5 ์ด์ ์๋ Object ํ์ ์ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ฐ์ฒด์ ํ์ ์ผ๋ก ์บ์คํ ํ์ฌ ์ฌ์ฉํด์ผ๋ง ํ๊ณ , ์๋ชป๋ ์บ์คํ ์ผ๋ก ์ธํด ๋ฐํ์ ์ค๋ฅ ๋ฐ์ํ ๊ฐ๋ฅ..
-
[Java] Java IO, NIOAndroid/Java 2021. 2. 22. 14:47
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ฌ ์์ฑํ์์ต๋๋ค. Java IO ๋ชจ๋ ํ๋ก๊ทธ๋จ์์๋ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ ํ์ฐ์ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ ํค๋ณด๋๋ฅผ ํตํด ์ง์ ์ ๋ ฅ์ ํ์ฌ ํ๋ก๊ทธ๋จ์๊ฒ ์ ์ก์ ํ๊ฑฐ๋, ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ์์๊ฒ ๋ชจ๋ํฐ๋ ํ์ผ ๋ฑ์ผ๋ก ๋ณด๋ด์ด ์ถ๋ ฅํ ์๋ ์์ต๋๋ค. ์๋ฐ์์๋ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ(stream) ํํ๋ก ์ ์ถ๋ ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ์คํธ๋ฆผ์ด๋ ์ถ๋ฐ์ ์์ ๋์ฐฉ์ ๊น์ง ์ฐ์์ ์ผ๋ก ํ๋ฌ๊ฐ๋ค๋ ๊ฐ๋ ์ ๋ปํฉ๋๋ค. ํ๋์ ์คํธ๋ฆผ์ ๊ฐ์ง๊ณ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋์์ ํ ์๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ์ก์ ์ธก์ธ์ง, ์์ ์ธก์ธ์ง์ ๋ฐ๋ผ ์คํธ๋ฆผ์ ์ข ๋ฅ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ ๋๋ InputStream์ ์ฌ์ฉํ๊ณ , ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋๋ OutputStream์ ์ฌ์ฉ..
-
[Java] Annotation, Meta data๋?Android/Java 2021. 2. 19. 18:27
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"๋ฅผ ํตํด ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ์์ต๋๋ค. Annotation์ด๋? Anntation์ JDK 1.5๋ถํฐ ๋์ ๋ ๊ฒ์ผ๋ก ์๋ฐ ์์ค ์ฝ๋์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ์ ์ผ์ข ์ ๋๋ค. ๋๋ถ๋ถ์ด ๋ง์ด ๋ดค์ ๋งํ @Override, @Deprecated ๊ฐ Annotation ์๋ก Annotation์ ๊ตฌํ๋ ์ ๋ณด์ ๋ฐ๋ผ ์ฐ๊ฒฐ๋๋ ๋ฐฉํฅ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ์ฆ, ์ ์ฒด์ ์ธ ์์ค์ฝ๋์ ๋ก์ง์ ๋ฐ๊พธ์ง ์์ง๋ง Annotation์ ํ๊ฒ์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ด๋ ์์ค์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Annotation์ ๊ธฐ๋ฅ์ ์ ํ์ฉํ๋ค๋ฉด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ณ๋์ ์์คํ ์ค์ ์ Annotation์๊ฒ ์์ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ค์ ๋ก์ง ๊ตฌํ์๋ง ์ง์คํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Annotation์ ํตํด AOP(..