Self Encapsulate Field
field์ ์ง์ ์ ๊ทผํ๊ณ ์๋๋ฐ Field์ ๋ํ ๊ฒฐํฉ์ด ์ด์ํด์ง๋ฉด,
๊ทธ Field์ ๋ํ get/set ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ ํญ์ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Field์ ์ ๊ทผํ๋ผ
ํด๋์ค ์์์๋ get/set์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค
Replace Data Value with Object
์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ ๋์์ ํ์๋ก ํ๋ ๋ฐ์ดํฐ ์์ดํ
์ด ์์ ๋๋
๋ฐ์ดํฐ ์์ดํ
์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ด๋ผ.
๋๊ธฐ
๊ฐ๋จํ ๋ฐ์ดํฐ ์์ดํ
์ธ ์ค ์์๋๋ฐ ํน๋ณํ ๋์์ด ์ฌ๋ฟ ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ผ ํจ
์ ์ฐจ
๋ฐ์ดํฐ ๊ฐ์ ๋ํ ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
์์ค ํด๋์ค์ ๊ฐ๊ณผ ๊ฐ์ ํ์
์ผ๋ก ํ๋๋ฅผ ๋ง๋ค์ด final๋ก ์ ์ธํ๋ค.
get ๋ฉ์๋์ ๋ฐ์ดํฐ ๊ฐ์ ํ๋๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ทจํ๋ ์์ฑ์๋ฅผ ์ถ๊ฐํ๋ค.
์ปดํ์ผ
์์ค ํด๋์ค ํ๋์ ํ์
์ ์๋ก์ด ํด๋์ค๋ก ๋ฐ๊พผ๋ค.
์์ค ํด๋์ค์ get ๋ฉ์๋๋ฅผ ์๋ก์ด ํด๋์ค์ get ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ก ๋ฐ๊พผ๋ค.
๋ง์ฝ ํ๋๊ฐ ์์ค ํด๋์ค์ ์์ฑ์์์ ์ฌ์ฉ๋๋ฉด, ์๋ก์ด ํด๋์ค์ ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๊ฐ์ ํ ๋น
get ๋ฉ์๋์์ ์๋ก์ด ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋๋ก ๋ฐ๊พผ๋ค.
์ปดํ์ผ, ํ
์คํธ
์๋ก์ด ๊ฐ์ฒด์ ๋ํด Change Value to Reference๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋์ง ํ์ธ
Change Value to Reference
๋์ผํ ์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ฐ์ง๊ณ ์๋ ํด๋์ค๊ฐ ์๊ณ ์ฌ๋ฌ ๊ฐ์ ๋์ผํ ์ธ์คํด์ค๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด,
๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ด๋ผ.
๋๊ธฐ
์ด๋ ํ ๋ณ๊ฒฝ์ด ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๋ชจ๋ ๊ณณ์ผ๋ก ์ ํ๋๊ธฐ๋ฅผ ์ํ ๋
Change Reference to Value
์๊ณ , ๋ถ๋ณ์ฑ์ด๊ณ , ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ค์ด ์ฐธ์กฐ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ
๊ทธ๊ฒ์ ๊ฐ ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ด๋ผ.
Replace Array with Object
๋ฐฐ์ด์ ํน์ ์์๊ฐ ๋ค๋ฅธ ๋ป์ ๊ฐ์ง๊ณ ์๋ค๋ฉด,
๋ฐฐ์ด์ ๊ฐ๊ฐ์ ์์์ ๋ํ ํ๋๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ๋ผ.
= ๋ณ๊ฒฝ ์ =
String[] row = new String[3];
row[0] = "Liverpool";
row[1] = "15";
= ๋ณ๊ฒฝ ํ =
Performance row = new Performance();
row.setName("Liverpool");
row.setWins("15");
Duplicate Observed Data
GUI ์ปจํธ๋กค์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ฉ์ธ ๋ฐ์ดํฐ๊ฐ ์๊ณ , ๋๋ฉ์ธ ๋ฉ์๋์์ ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ,
๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋๋ฉ์ธ ๊ฐ์ฒด๋ก ๋ณต์ฌํ๊ณ , ์ต์ ๋ฒ๋ฅผ ๋์ด ๋ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ผ
ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ์ซ์ ๋ฆฌํฐ๋ด์ด ์์ผ๋ฉด, ์์๋ฅผ ๋ง๋ค๊ณ , ์๋ฏธ๋ฅผ ์ ๋ํ๋ด๋๋ก ์ด๋ฆ์ ์ง์ ๋ค์, ์ซ์๋ฅผ ์์๋ก ๋ฐ๊พธ์ด๋ผ.
๋งค์ง๋๋ฒ๋ ์์๋ก ๋ง์ฝ ๋งค์ง๋๋ฒ๊ฐ ํ์
์ฝ๋๋ผ๋ฉด Replace Type Code with Class ์ ์ฉ ๊ณ ๋ ค
Replace Type Code with Class
ํด๋์ค์ ๋์์ ์ํญ์ ๋ฏธ์น์ง ์๋ ์ซ์๋ก ๋ ํ์
์ฝ๋๊ฐ ์์ผ๋ฉด,
์ซ์๋ฅผ ํด๋์ค๋ก ๋ฐ๊พธ์ด๋ผ
Replace Type Code with Subclasses
ํด๋์ค์ ๋์์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ํ์
์ฝ๋๊ฐ ์๋ค๋ฉด
ํ์
์ฝ๋๋ฅผ ์๋ธํด๋์ค๋ก ๋ฐ๊พธ์ด๋ผ.
๋๊ธฐ
๋ง์ ์กฐ๊ฑด๋ฌธ์ด ์์ ๋ ( if, switch ๋ฑ )
๊ฐ๊ฐ subclass ๋ง๋ค๊ณ Factory๋ก ๊ฐ์ฒด ์์ฑ