8์žฅ

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๋กœ ๊ฐ์ฒด ์ƒ์„ฑ

Last updated