๐Ÿ“š Study

Factory Method Factory Method ํŒจํ„ด ๐Ÿ’ก ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณต์žฅ์€ Template Method ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑํ•œ ๊ฒƒ ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •ํ•˜๋˜, ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ์ด๋ฆ„๊นŒ์ง€ ๊ฒฐ์ •ํ•˜์ง€ ์•Š์Œ ๊ตฌ์ฒด์ ์ธ ์‚ด์€ ๋ชจ๋‘ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •! ⇒ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์‹ค์ œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ ๋“ฑ์žฅ์ธ๋ฌผ Product (์ œํ’ˆ) ํ”„๋ ˆ์ž„์›Œํฌ package ์ƒ์„ฑ๋˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ํ•˜์œ„ ํด๋ž˜์Šค `ConcreteProduct` ์—์„œ ๊ฒฐ์ • package framework; public abstract class Product { public abstract void use(); } Creat..
Template Method ํŒจํ„ด ๐Ÿ’ก ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ฒ˜๋ฆฌ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„ ๊ฒฐ์ • ๋“ฑ์žฅ์ธ๋ฌผ `AbstractClass` (์ถ”์ƒ ํด๋ž˜์Šค) ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ, ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์ธ `ConcreteClass` ์—์„œ ๊ตฌํ˜„ public abstract class AbstractDisplay { // ํ•˜์œ„ ํด๋ž˜์Šค์— ๊ตฌํ˜„์„ ๋งก๊ธฐ๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ public abstract void open(); public abstract void print(); public abstract void close(); // AbstractDisplay์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์†Œ๋“œ -> ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ public final void display() { ..
Adapter ๐Ÿ’ก ‘์ด๋ฏธ ์ œ๊ณต๋œ ๊ฒƒ’๊ณผ ‘ํ•„์š”ํ•œ ๊ฒƒ’ ์‚ฌ์ด์˜ ‘์ฐจ์ด’๋ฅผ ๋ฉ”์šฐ๋Š” ๋””์ž์ธ ํŒจํ„ด Wrapper ํŒจํ„ด์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ [์˜ˆ์ œ] ์ƒ์†์„ ์‚ฌ์šฉํ•œ ํŒจํ„ด ํด๋ž˜์Šค์— ์˜ํ•œ Adapter ํŒจํ„ด Banner ํด๋ž˜์Šค ๋ฏธ๋ฆฌ ์ œ๊ณต๋˜๋Š” ํด๋ž˜์Šค public class Banner { private String string; public Banner(String string) { this.string = string; } public void showWithParen() { System.out.println("(" + string + ")"); } public void showWithAster() { System.out.println("*" + string + "*"); } } Print ์ธํ„ฐํŽ˜์ด์Šค ํ•„์š”๋กœ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ..
Iterator ๋ฌด์—‡์ธ๊ฐ€ ๋งŽ์ด ๋ชจ์—ฌ ์žˆ์„ ๋•Œ ์ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ์ „์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ iterator: ๋ฐ˜๋ณต์ž Iterable Interface ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•  ๋Œ€์ƒ์„ ๋‚˜ํƒ€๋ƒ„ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ญ”๊ฐ€ ๋งŽ์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ฒƒ(=์ง‘ํ•ฉ์ฒด)๊ฐ€ ๋œ๋‹ค package java.lang.* public interface Iterable { public abstract Iterator iterator(); } `iterator()`: ์ง‘ํ•ฉ์ฒด์— ํฌํ•จ๋œ ์š”์†Œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฒ˜๋ฆฌํ•ด ๋‚˜๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ Iterator Interface ํ•˜๋‚˜ํ•˜๋‚˜์˜ ์š”์†Œ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ → ๋ฃจํ”„ ๋ณ€์ˆ˜ ์—ญํ•  package java.util.* public interface Iterator { public ab..
์ ์ด
'๐Ÿ“š Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)