๐Ÿ–Œ๏ธ ๋””์ž์ธ ํŒจํ„ด

๐Ÿ–Œ๏ธ ๋””์ž์ธ ํŒจํ„ด

ํ”„๋ก์‹œ ํŒจํ„ด(Proxy Pattern)

ํ”„๋ก์‹œ ํŒจํ„ด์ด๋ž€? ๋Œ€์ƒ ๊ฐ์ฒด์— ์ ‘๊ทผํ• ๋•Œ ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ๋Œ€ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ”„๋ก์‹œ์˜ ์‚ฌ์ „์ ์ธ ์˜๋ฏธ๋Š” ๋Œ€๋ฆฌ์ธ์ด๋ผ๋Š” ๋œป์ด๋‹ค. ์ฆ‰, ๋Œ€์ƒ ๊ฐ์ฒด์˜ ๋Œ€๋ฆฌ์ธ์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ํŒจํ„ด์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ํ•ด๋‹น ํŒจํ„ด์˜ ํŠน์ง•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋”๋ณด๊ธฐ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ž€? ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์— ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์ด์ œ ํ”„๋ก์‹œ ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž public interface ISubject { void action(); } public class RealSubject implements ISubject { @Override public void action() ..

๐Ÿ–Œ๏ธ ๋””์ž์ธ ํŒจํ„ด

์ดํ„ฐ๋ ˆ์ดํ„ฐ ํŒจํ„ด(Iterator Pattern)

์ดํ„ฐ๋ ˆ์ดํ„ฐ ํŒจํ„ด์ด๋ž€? ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ๋“ค์— ์ ‘๊ทผํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ํ•ด๋‹น ํŒจํ„ด์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์ƒ๊ด€์—†์ด ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ผ๋Š” ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ˆœํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. public interface Aggregate { Iterator createIterator(); } public class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; } } public class BookShelf implements Aggregate ..

seonghye0n
'๐Ÿ–Œ๏ธ ๋””์ž์ธ ํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก