[λ””μžμΈνŒ¨ν„΄] μ˜΅μ €λ²„ νŒ¨ν„΄ (Observer Pattern)

ν•œ 객체의 μƒνƒœ 변화에 따라 λ‹€λ₯Έ 객체의 μƒνƒœλ„ μ—°λ™λ˜λ„λ‘ μΌλŒ€λ‹€ 객체 의쑴 관계λ₯Ό ꡬ성 λ°μ΄ν„°μ˜ 변경이 λ°œμƒν–ˆμ„ 경우 μƒλŒ€ ν΄λž˜μŠ€λ‚˜ 객체에 μ˜μ‘΄ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ 데이터 변경을 ν†΅λ³΄ν•˜κ³ μž ν•  λ•Œ μ‚¬μš© (ex) μƒˆλ‘œμš΄ 파일이 μΆ”κ°€λ˜κ±°λ‚˜ κΈ°μ‘΄ 파일이 μ‚­μ œλ˜μ—ˆμ„ λ•Œ λ‹€λ₯Έ 탐색기에 μ¦‰μ‹œ λ³€κ²½ 톡보해야 함) ex) (interface) IButtonListener.java public interface IButtonListener {... Continue reading...

[λ””μžμΈνŒ¨ν„΄] λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄ (Decorator Pattern)

κΈ°μ‘΄ λΌˆλŒ€(클래슀)λŠ” μœ μ§€ν•˜λ˜, 이후 ν•„μš”ν•œ ν˜•νƒœλ‘œ κΎΈλ°€ λ•Œ μ‚¬μš© ν™•μž₯이 ν•„μš”ν•œ 경우 μƒμ†μ˜ λŒ€μ•ˆμœΌλ‘œλ„ ν™œμš©ν•¨ ex) (interface) ICar.java public interface ICar { int getPrice(); void showPrice(); } (implements ICar) Audi.java public class Audi implements ICar{ private int price; public Audi(int price){ this.price = price; } @Override public int getPrice() {... Continue reading...

[λ””μžμΈνŒ¨ν„΄] ν”„λ‘μ‹œ νŒ¨ν„΄ (Proxy Pattern)

ProxyλŠ” λŒ€λ¦¬μΈμ΄λΌλŠ” 뜻으둜, λ­”κ°€λ₯Ό λŒ€μ‹ ν•΄μ„œ μ²˜λ¦¬ν•˜λŠ” 것 Proxy Classλ₯Ό 톡해 λŒ€μ‹  μ „λ‹¬ν•˜λŠ” ν˜•νƒœλ‘œ 섀계 μ‹€μ œ ClientλŠ” Proxy둜 λΆ€ν„° κ²°κ³Όλ₯Ό λ°›μŒ μŠ€ν”„λ§ AOP > λ‚΄κ°€ μ›ν•˜λŠ” λ©”μ†Œλ“œλ‚˜ κΈ°λŠ₯λ“€, ν©μ–΄μ ΈμžˆλŠ” κΈ°λŠ₯듀을 λ™μΌν•˜κ²Œ μ œκ³΅ν•˜λŠ” 역할을 ν”„λ‘μ‹œ νŒ¨ν„΄μœΌλ‘œ μ‚¬μš© (AOPλŠ” ν”„λ‘μ‹œ νŒ¨ν„΄μ„ ν™œμš© ν•΄ νŠΉμ •ν•œ λ©”μ†Œλ“œ 등에 μ•žλ’€λ‘œ λ‚΄κ°€ μ›ν•˜λŠ” κΈ°λŠ₯을 넣을 수 있고,... Continue reading...

[λ””μžμΈνŒ¨ν„΄] μ–΄λŒ‘ν„° νŒ¨ν„΄ (Adapter Pattern)

μ„œλ‘œ λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 가진 두 클래슀λ₯Ό μ–΄λŒ‘ν„° 클래슀둜 μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡일 μ‹œμΌœ μ‚¬μš©ν•˜λŠ” 방법 (ν˜Έν™˜μ„±μ΄ μ—†λŠ” μΈν„°νŽ˜μ΄μŠ€ λ•Œλ¬Έμ— ν•¨κ»˜ λ™μž‘ν•  수 μ—†λŠ” ν΄λž˜μŠ€λ“€μ΄ ν•¨κ»˜ μž‘λ™ν•˜λ„λ‘ ν•΄μ€Œ) ex) (interface) Electronic110V.java public interface Electronic110V { void powerOn(); } (interface) Electronic220V.java public interface Electronic220V { void connect(); } (implements Electronic110V) HairDryer.java public class HairDryer... Continue reading...

[λ””μžμΈνŒ¨ν„΄] 싱글톀 νŒ¨ν„΄ (Singleton Pattern)

객체의 μΈμŠ€ν„΄μŠ€κ°€ μœ μΌν•˜κ²Œ 1개만 μƒμ„±λ˜μ–΄μ•Ό ν•˜λŠ” κ²½μš°μ— μ‚¬μš©λ˜λŠ” νŒ¨ν„΄ μƒμ„±μžκ°€ μ—¬λŸ¬ μ°¨λ‘€ ν˜ΈμΆœλ˜λ”λΌλ„ μ‹€μ œ μƒμ„±λ˜λŠ” κ°μ²΄λŠ” ν•˜λ‚˜μ΄κ³ , 졜초 생성 이후에 호좜된 μƒμ„±μžλŠ” μ΅œμ΄ˆμ— μƒμ„±ν•œ 객체λ₯Ό λ°˜ν™˜ μ‹±κΈ€ν†€μœΌλ‘œ λ§Œλ“€μ–΄μ§„ 클래슀의 μΈμŠ€ν„΄μŠ€λŠ” μ „μ—­ μΈμŠ€ν„΄μŠ€ > λ‹€λ₯Έ 클래슀의 μΈμŠ€ν„΄μŠ€λ“€μ΄ 데이터λ₯Ό κ³΅μœ ν•˜κΈ° 쉬움 κ³΅ν†΅λœ 객체λ₯Ό μ—¬λŸ¬κ°œ μƒμ„±ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μƒν™©μ—μ„œ 많이 μ‚¬μš© Springμ—μ„œ Bean은... Continue reading...