Factory ํจํด (๋ง๋ค๋ผ๊ณ ๊ณต์ฅ์ ์ผ์ ์ ๋ฌ)
- ๋๊ฐ Adapyer๋ฅผ ์์ฑํด์ผ ํ๋๊ฐ?
โ ๊ด์ฌ ๋ถ๋ฆฌ์ ์์น์ ๋ฐ๋ผ ๋์ ์์ง๋๋ฅผ ๊ฐ์ง๋๋ก ํ๊ธฐ ์ํด์ Factory๊ฐ!

Lazy initialization์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ํ์ํ ํ๋ฉด๋ง ๊ทธ๋๊ทธ๋ ๋ง๋ค์ด์ค๋ค.
Strategy pattern
- ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ์ผ๋ก ๋นผ์, polymorphism(๋คํ์ฑ)์ ์ฌ์ฉํ์ฌ plug-inํํ๋ก ๋ง๋ ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํ์ํ ์ ๋ฌ๋๋ data์ธ Sale์ Context Object
๋ผ๊ณ ํ๋ค.
Strategy๋ฅผ ์์ฑํ ์ฑ
์์ Factory Pattern
์ด ๊ฐ๋๋ค.
Static๊ณผ Singleton์ ์ฐจ์ด์
Q. ์ ๋ชจ๋ ์๋น์ค ๋ฉ์๋๋ฅผ ํด๋์ค ์์ฒด์ ์ ์ ๋ฉ์๋๋ก ๋ง๋ค์ง ์๊ณ , ๊ฐ์ฒด๋ฅผ ๋ง๋๋๊ฐ?
โ ์ ์ ๋ฉ์๋(static)๋ ๋คํ์ฑ์ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ.
๋๋ถ๋ถ์ ๊ฐ์ฒด์งํฅ ์๊ฒฉํต์ ์ ์ ์ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์๋๋ค.
Composite ํจํด๊ณผ ๊ธฐํ ์ค๊ณ ์์น
- ๋ณตํฉ์ ์ธ ๊ฐ๊ฒฉ์ ์ฑ
์ด ์์ ๋ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
Observer / Publish-Subscribe / Delegation Event Model
- ๋๋ฉ์ธ ๋ ์ด์ด๊ฐ UI๋ฅผ ๋ชจ๋ฅด๋๋ผ๋ ์ด๋ ํ ์ด๋ฒคํธ์ ๋ํด UI์๊ฒ ๊ฐ์ ์ ๋ฌํด ์ ์๋ค.
- ๊ตฌ๋
์๋ ์ก์งํ์ฌ๋ฅผ subscribe๋ง ํ๊ณ ์๋ค. (UI)
- ์ ๊ท ์ก์ง๊ฐ ๋ฐ์๋๋ฉด publishํด์ ๋ณด๋ด์ค๋ค. (๋๋ฉ์ธ)
Sale : Publisher (๋๋ฉ์ธ)
SaleFrame : Subscriber (UI) โSale์ SaleFrame์ ๋จ์ํ ๋ฆฌ์ค๋๋ก๋ง ์๊ณ ์๋ค.โ
[์๋ชป๋ ์ํฉ]
ํ๋งค ์ด์ก์ด ๋ณํ๋ฉด Sale์ด GUIํ๋ฉด์ ๋ณํ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
โ ์ด๋ ๋๋ฉ์ธ์ด UI๋ฅผ ์๊ณ ์์ด์ผ๋ง ํ๊ธฐ ๋๋ฌธ์, Low copling ์๋ฐฐ, ๊ด์ฌ๋ถ๋ฆฌ ์๋ฐฐ
[์ณ์ ์ํฉ]
ํ๋งค์ด์ก์ด ๋ณํ๋ฉด ๋๋ฉ์ธ์ด ์ด๋ฅผ ๊ฐ์งํ๊ณ , UI์ ์ค์ ๋ ๊ฐ์ ๋ณด๋ด์ฃผ๊ธฐ๋ง ํ๋ค.
โ ์ฆ, Sale์ ๋ช ๊ฐ์ Subscriber๊ฐ ์๋์ง, ํด๋น ์ ๋ณด๋ก ๋ฌด์จ ์ง์ํ๋์ง ์๋น ๊ฐ ์๋๋ค.
โด ๋คํ์ฑ(polymorphism)๊ณผ ๋ณํ ๋ณดํธ(protected variation)ํจํด๊ณผ ๊ด๋ จ์ด ์๋ค.

์ด๋ป๊ฒ ํ๋ฌ๊ฐ๋๊ฐ?
- subscriber์ธ SaleFrame์ด swing๊ณผ Listener ์ธํฐํ์ด์ค๋ฅผ ์์
- initialize(์ด๊ธฐํ)์์ sale.addPropertyListener๋ฅผ ํตํ์ฌ ๋ฆฌ์ค๋์ ๊ตฌ๋
๋ฑ๋ก ์์ฒญ
- publisher์ธ Sale์ด ํด๋น ๋ฆฌ์ค๋๋ฅผ ๊ตฌ๋
๋ชฉ๋ก์ ๋ฑ๋ก
- SetTotal๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ๋ฑ๋ก๋ propertylistener์ธ SaleFrame์๊ฒ ๊ฐ์ ์ ๋ฌํด์ค.
- saleFrame์ ๋ฐ์ ๊ฐ์ ํ
์คํธ๋ , ๊ทธ๋ํ๋ ์์์ ์ฌ์ฉ