GiantStepDEV
article thumbnail
(JAVA์ž๋ฐ”) ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด + ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ..

์„œ๋ก  ์ผ์ „์— ํ•œ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด ๊ธ€์„ ์˜ฌ๋ ธ์—ˆ๋Š”๋ฐ.. ์‚ฌ์‹ค ๋‹น์‹œ์— ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ์—๋Š” ๊ธ€์ด ์–ด๋ ค์›Œ์„œ ํ•ด๋‹น ํŒจํ„ด์— ๋Œ€ํ•œ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. https://developyanggaeng.tistory.com/129 3. [์ž๋ฐ”/Java] ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด(Factory Method Pattern) : '๊ฐ์ฒด'์™€ '๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค' ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž ํ•ด๋‹น ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://memostack.tistory.com/61 Design Pattern - Factory Method Pattern (ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด) Factory Method Pattern ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์€ '๊ฐ์ฒด'์™€ '๊ฐ์ฒด ์ƒ์„ฑ ํด developyanggaeng.tistory..

[Effective JAVA] ๋นŒ๋” ํŒจํ„ด - ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์ถ”์ฒœ

๋นŒ๋” ํŒจํ„ด(Builder pattern) ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๋Œ€์‹ , ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ์œผ๋กœ ์ƒ์„ฑ์ž(ํ˜น์€ ์ •์  ํŒฉํ† ๋ฆฌ)๋ฅผ ํ˜ธ์ถœํ•ด ๋นŒ๋” ๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค. ๋นŒ๋” ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ผ์ข…์˜ setter ๋ฉ”์†Œ๋“œ๋“ค๋กœ ์›ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” build ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค. ๐Ÿ’ก ๋นŒ๋”๋Š” ์ƒ์„ฑํ•  ํด๋ž˜์Šค ์•ˆ์— ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด๋‘”๋‹ค. ๐Ÿ’ก ์ ์ธต์  ์ƒ์„ฑ์ž ํŒจํ„ด๋ณด๋‹ค ์ฝ”๋“œ๊ฐ€ ์žฅํ™ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 4๊ฐœ ์ด์ƒ์€ ๋˜์–ด์•ผ ์“ธ๋งŒํ•จ. package ๋นŒ๋”ํŒจํ„ด; public class NutritionFacts { // ํ•„์ˆ˜ ์ž…๋ ฅ private final int servingSize; // 1ํšŒ ์ œ๊ณต๋Ÿ‰ private final int servings; // ์ด nํšŒ ์ œ๊ณต๋Ÿ‰ ..

3. [์ž๋ฐ”/Java] ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด(Factory Method Pattern) : '๊ฐ์ฒด'์™€ '๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค' ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด

ํ•ด๋‹น ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://memostack.tistory.com/61 Design Pattern - Factory Method Pattern (ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด) Factory Method Pattern ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์€ '๊ฐ์ฒด'์™€ '๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค'๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด์„œ, ๊ฐ์ฒด ์ƒ์„ฑ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค. memostack.tistory.com ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ํŒจํ„ด? '๊ฐ์ฒด'์™€ '๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค'๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ new๋กœ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ , ๊ฐ„์ ‘์ ์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ์ œ ์š”๊ตฌ์‚ฌํ•ญ - ๊ฒŒ์ž„ ์•„์ดํ…œ์„ ๋งŒ๋“œ๋Š” ์•„์ดํ…œ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ ๋‹ค. ์•„์ดํ…œ์˜ ..

2. [์ž๋ฐ”/Java] ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด(Template Method Pattern) : ์ผ์ •ํ•œ ๊ตฌ์กฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ ์ถ”์ฒœ

ํ•ด๋‹น ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://memostack.tistory.com/60 Design Pattern - Template Method Pattern (ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด) Template Method Pattern ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์€ ์ผ์ •ํ•œ ๊ตฌ์กฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ๋””์ž์ธ ํŒจํ„ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ์—๋„ ํŽธ๋ฆฌํ•จ. ์ผ์ •ํ•œ ๊ตฌ์กฐ์˜ ํ”„๋กœ์„ธ์Šค? ํŠน์ • memostack.tistory.com ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด? ์ผ์ •ํ•œ ๊ตฌ์กฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ๋””์ž์ธ ํŒจํ„ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ํŽธ๋ฆฌํ•จ. ์ผ์ •ํ•œ ๊ตฌ์กฐ? ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•ญ์ƒ A -> B -> C ์ˆœ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด, ๊ฐ ์ž‘์—…์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌํ˜„ ์˜ˆ..

1. [์ž๋ฐ”/Java] ์ŠคํŠธ๋ž˜ํ‹ฐ์ง€ ํŒจํ„ด(Strategy Pattern) : ์ „๋žต์„ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด(interface)

ํ•ด๋‹น ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://memostack.tistory.com/58 Design Pattern - Strategy Pattern (์ŠคํŠธ๋ž˜ํ‹ฐ์ง€ ํŒจํ„ด) ์ŠคํŠธ๋ž˜ํ‹ฐ์ง€ ํŒจํ„ด ์ „๋žต์„ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด ํ–‰์œ„(Behavior)๋“ค์„ ์บก์Аํ™”ํ•˜์—ฌ ๋™์ ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด ์˜ˆ์ œ ์š”๊ตฌ์‚ฌํ•ญ ๊ฒŒ์ž„ ์ผ€๋ฆญํ„ฐ์™€ ๋ฌด๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ์ผ€๋ฆญํ„ฐ๊ฐ€ memostack.tistory.com ์ŠคํŠธ๋ž˜ํ‹ฐ์ง€ ํŒจํ„ด? ์ „๋žต์„ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด ๋ฉ”์†Œ๋“œ๋ฅผ ์บก์Аํ™”ํ•˜์—ฌ ๋™์ ๋ฐ”์ธ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ํŒจํ„ด ์˜ˆ์ œ ์š”๊ตฌ์‚ฌํ•ญ - ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ์™€ ๋ฌด๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฌด๊ธฐ๋ฅผ ์žฅ์ฐฉํ•  ์ˆ˜ ์žˆ์Œ. - ์บ๋ฆญํ„ฐ๊ฐ€ ๋“ค๊ณ  ์žˆ๋Š” ๋ฌด๊ธฐ๋Š” ๋ณ€๊ฒฝ์ด ์ž์œ ๋กœ์›Œ์•ผ ํ•จ. ๋ฌด๊ธฐ ์ข…๋ฅ˜ ์ด (Gun) ์นผ ..