๐ป
Java ํ๋ก๊ทธ๋๋ฐ - ๊ฐ์ฒดํ์ ํ์ธ(instanceof), ์ฑ๊ธํค ํจ์(Singleton) ๋ณธ๋ฌธ
Java ํ๋ก๊ทธ๋๋ฐ - ๊ฐ์ฒดํ์ ํ์ธ(instanceof), ์ฑ๊ธํค ํจ์(Singleton)
๋ํจ๋ 2020. 5. 11. 14:57๊ฐ์ฒด ํ์ ํ์ธ(instanceof)
๊ฐ์ ํ์ ๋ณํ์ ์์ ํ์ ์ด ๋ถ๋ชจ ํ์ ์ผ๋ก ๋ณํ๋์ด ์๋ ์ํ์์๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ชจ ํ์ ์ ๋ณ์๊ฐ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ ์์ ํ์ ์ผ๋ก ๋ณํํ ์ ์๋ค.
Parent parent = new Parent();
Child child = (Child) Parent; //๊ฐ์ ํ์
๋ณํ์ ํ ์ ์๋ค.
Parent parent = new Child(); //upCasting
Child child = (Child) Parent; //๊ฐ์ ํ์
๋ณํ์ ํ ์ ์๋ค. downCasting
๊ทธ๋ ๋ค๋ฉด ๋ถ๋ชจ ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ ๋ถ๋ชจ ๊ฐ์ฒด์ธ์ง ์์ ๊ฐ์ฒด์ธ์ง ์ด๋ป๊ฒ ํ์ธํ ๊น?
์ด๋ค ๊ฐ์ฒด๊ฐ ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค์ธ์ง ํ์ธํ๋ ค๋ฉด instanceof ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.

shape ๋งค๊ฐ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ Line์ธ์ง, ์ฆ Line ํ์ ์ผ๋ก ๋ณํ์ด ๊ฐ๋ฅํ์ง ํ์ธํ์ฌ ๊ฐ์ ํ์ ๋ณํ์ ํด์ค๋ค.
์ ๋ฆฌํ์๋ฉด, ๊ฐ์ ํ์ ๋ณํ์ ํ๊ธฐ ์ ์ instanceof ์ฐ์ฐ์๋ก ๋ณํ์ํฌ ํ์ ์ ๊ฐ์ฒด์ธ์ง ์กฐ์ฌํด์ ์๋ชป๋ ๋งค๊ฐ๊ฐ์ผ๋ก ์ธํด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ ๊ฒ์ ๋ง์์ผํ๋ค.
์ฑ๊ธํค(Singleton)
์์ฑ์๊ฐ ์ฌ๋ฌ ์ฐจ๋ก ํธ์ถ๋๋๋ผ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ํ๋์ด๊ณ ์ต์ด ์์ฑ ์ดํ์ ํธ์ถ๋ ์์ฑ์๋ ์ต์ด์ ์์ฑ์๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
๋ฉ์๋์ ์ธ์คํด์ค ๋ณ์ ๋ชจ๋ static์ผ๋ก ์ ์ธํ๋ค.
๊ธฐ๋ณธ์์ฑ์๋ฅผ private ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๊ณ getInstance๋ฅผ ํตํด์๋ง ์์ฑ์ด ๊ฐ๋ฅํ๋ค. getInstance๋ ๋ด๋ถ์ ์ผ๋ก ์์ฑ๋์ง ์์๋ค๋ฉด ์์ฑํ๊ณ , ๊ธฐ์กด์ ์์ฑ๋ ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๋ฆฌํดํ๋ ํํ๋ก ํ๋ก๊ทธ๋จ ์ ๋ฐ์ ๊ฑธ์ณ ํ๋์ ์ธ์คํด์ค๋ฅผ ์ ์งํ๋ค.

