Item 4. Noninstantiability
์ธ์คํด์คํ๋ฅผ ๋ง์ผ๋ ค๊ฑฐ๋ private ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ผ
๋ณดํต์ ์ํฉ์ ์๋์ง๋ง ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ธ์คํด์คํ ๋ถ๊ฐ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
์ ์ ๋ฉ์๋์ ์ ์ ํ๋๋ง์ ๋ด์ ํด๋์ค๊ฐ ํ์ํ ๋(ex. java.lang.Math, java.util.Arrays)
ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๋ ์ ์ ๋ฉ์๋๋ฅผ ๋ด์ ํด๋์ค๊ฐ ํ์ํ ๋(ex. java.util.Collections)
final ํด๋์ค์ ๊ด๋ จํ ๋ฉ์๋๋ค์ ๋ชจ์๋์ ๋(ex. java.lang.reflect.Method)
๋๋ฌธ์ ์์ ๊ฐ์ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ฐ๋ ค๊ณ ์ค๊ณํ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ ์ธ์คํด์คํ ๋ถ๊ฐ ํด๋์ค๋ก ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ธ์คํด์คํ ๋ถ๊ฐ ํด๋์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
์์ฑ์๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ฃผ์ง๋ง, ๋ช ์์ ์ผ๋ก private ์์ฑ์๋ฅผ ์ ์ธํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ง ์๋๋ค. (**์ถ์ ํด๋์ค๋ก ๋ง๋ค์ด๋ ์ธ์คํด์คํ ๋ถ๊ฐ ํด๋์ค๊ฐ ๋์ง๋ง, ์์์ ๋ฐ์ ์ธ์คํด์คํ ๊ฐ๋ฅํ ํด๋์ค๊ฐ ๋ง๋ค์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.)
class UtilityClass {
// ๊ธฐ๋ณธ ์์ฑ์๋ฅผ private์ผ๋ก ์ ์ธํ๊ณ , ์๋ฌ๋ฅผ ๋ฐ์ํด reflection์ด๋ ๋ด๋ถ ๋ฉ์๋๋ฅผ ํตํด ์์ฑ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋ง๋๋ค.
private UtilityClass() {
throw new AssertionError();
}
}
private ์์ฑ์๋ก ์ ์ธํ๋ฉด ์์๋ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๋ ํจ๊ณผ๋ ์์ด ํ์ ํด๋์ค๊ฐ ์๊ธฐ๋ ๊ฒ๋ ๋ง์ ์ ์๋ค.
Last updated
Was this helpful?