Skip to content

Latest commit

ย 

History

History
32 lines (26 loc) ยท 1.82 KB

File metadata and controls

32 lines (26 loc) ยท 1.82 KB

OCP

OCP๋ž€?

  • ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™

OCP์˜ ํŠน์ง•

  • ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์— ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผํ•œ๋‹ค.
    • ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ, ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.
    • ์—ด๋ ค์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๊ณ  ๋‹ซํ˜€์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ๋Šฅ์ถ”๊ฐ€๋ฅผ ํ•  ๋•Œ ๊ทธ ๋ชจ๋“ˆ์„ ์“ฐ๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ์ค„์ง€์–ด ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ
  • ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•˜์ž
  • ํ™•์žฅ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐœ๋ฐฉ์ ์ด๊ณ  ์ˆ˜์ •์— ๋Œ€ํ•ด์„œ๋Š” ํ์‡„์ ์ด์–ด์•ผํ•œ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„

OCP ์œ„๋ฐ˜ ์˜ˆ์ œ

  • ์–ด๋–ค ํƒ€์ž…์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ ์ธ ๋ถ„๊ธฐ๋ฌธ
    • ํ•˜๋‚˜์˜ enum์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ๊ตฐ๋ฐ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ if/switch๋ฌธ์„ ์“ฐ๊ณ ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด์•„์•ผํ•œ๋‹ค.
      • ๊ธฐ๋Šฅ์ถ”๊ฐ€๋Š” case๋ฅผ ํ•œ์ค„ ์ถ”๊ฐ€ํ•˜๋Š”๊ฒƒ ๋งŒํผ์ด๋‚˜ ์‰ฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋Ÿฌ๋ฉด enum์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ€์„œ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.
  • OCP๋Š” if/switch๋ฅผ ์ตœ๋Œ€ํ•œ ์•ˆ์“ฐ๋Š” ๊ฒƒ์œผ๋กœ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์•„์˜ˆ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  enum ๊ฐ™์€ ํƒ€์ž…์„ ๋ถ„๊ธฐํ•˜๋Š” ์ง€์ ์— ๋Œ€ํ•ด์„œ
    • ๋ถ„๊ธฐ๋ฌธ์„ ์—†์• ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค์˜ ๊ธธ์ด๋ฅผ ์ค„์—ฌ์„œ SRP๋„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OCP๋ฅผ ์ง€ํ‚ค๋Š” ๋ฐฉ๋ฒ•

  • Protocol ์‚ฌ์šฉํ•ด์„œ ์ƒ์† ๋ฐ›๊ธฐ
  • ๋”•์…”๋„ˆ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ // OCP๋ฅผ ์ง€ํ‚ค๋Š” ์›์น™์€ ์•„๋‹˜
    • ์ œํ•œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

OCP์˜ ๋‹จ์ 

  • ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ํ•ด์•ผํ•œ๋‹ค.
  • ๋ถ„๋ช… ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ OCP ์›์น™์ผ ์ง€ํ‚ฌ ์ˆ˜ ์—†๋‹ค.

OCP์˜ ๋‹จ์  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ๋ณ„๋„์˜ ์กฐ๋ฆฝ, ์„ค์ •์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค.