๐Ÿ“š Study/๋””์ž์ธ ํŒจํ„ด

Singleton ํŒจํ„ด ๐Ÿ’ก ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•˜๋Š” ํŒจํ„ด ๋“ฑ์žฅ์ธ๋ฌผ Singleton ์œ ์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ `static` ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง → ํ•ญ์ƒ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("์ธ์Šคํ„ด์Šค ์ƒ์„ฑ") } public stgatic Singleton getInstance() { return singletone; } } Singleton ํด๋ž˜์Šค ๋กœ๋“œํ•  ๋•Œ ์ดˆ๊ธฐํ™” ์ง„ํ–‰ `private` ์ƒ์„ฑ์ž : ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์„ ๊ธˆ์ง€ํ•˜๊ธฐ ์œ„ํ•จ `getInstance()`: ์œ ์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป๋Š” ๋ฉ”..
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 ์ธํ„ฐํŽ˜์ด์Šค ํ•„์š”๋กœ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ..
์ ์ด
'๐Ÿ“š Study/๋””์ž์ธ ํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก