์ž๋ฃŒ์‹ค ์„œ๋ธŒ ํƒ€์ดํ‹€ ์•„์ด์ฝ˜

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 04 ์‹ฑ๊ธ€ํ†ค(Singleton), ํŒฉํ† ๋ฆฌ(Factory) ํŒจํ„ด ์†Œ๊ฐœ

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 04 ์‹ฑ๊ธ€ํ†ค(Singleton), ํŒฉํ† ๋ฆฌ(Factory) ํŒจํ„ด ์†Œ๊ฐœ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 79

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-08-08 20:55:58
  •  

- ์„ค๋ช…


๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”

uploadImage

๋””์ž์ธ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์ฆ๋œ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋” ํšจ์œจ์ ์ด๊ณ , ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์—ฌ๋Ÿฌ ํŒจํ„ด ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์„œ๋„ ์ค‘์š”ํ•œ #์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๊ณผ #ํŒฉํ† ๋ฆฌ ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด

uploadImage

#์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์–ด๋””์„œ๋“  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ๋กœ๊น… ํด๋ž˜์Šค ๋“ฑ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ๊ณต์œ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„ ์˜ˆ์ œ


PHP

query("SELECT * FROM users");

$db2 = Database::getInstance();
$db2->query("SELECT * FROM products");

// $db1๊ณผ $db2๋Š” ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค.
var_dump($db1 === $db2); // bool(true)
?>



ํŒฉํ† ๋ฆฌ(Factory) ํŒจํ„ด

uploadImage

#ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ๊ฐ์ฒด ์ƒ์„ฑ ๋กœ์ง์„ ๋ณ„๋„์˜ ํด๋ž˜์Šค(ํŒฉํ† ๋ฆฌ)๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ์ง€ ํด๋ผ์ด์–ธํŠธ(ํ˜ธ์ถœ์ž)๊ฐ€ ์ง์ ‘ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ณ , ํŒฉํ† ๋ฆฌ์— ์š”์ฒญํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ '๋งŒ๋“ค์–ด' ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ƒ์„ฑ ์ฝ”๋“œ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ฐ์ฒด ํƒ€์ž…์ด ์ถ”๊ฐ€๋˜์–ด๋„ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š” ์—†์ด ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํŒฉํ† ๋ฆฌ ํŒจํ„ด ๊ตฌํ˜„ ์˜ˆ์ œ


PHP

getName(); // Product A

$productB = ProductFactory::createProduct('B');
echo $productB->getName(); // Product B
?>



์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๊ณผ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์˜ ์ฐจ์ด์ 

uploadImage

๋‘ ํŒจํ„ด ๋ชจ๋‘ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์ง€๋งŒ, ๋ชฉ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. #์‹ฑ๊ธ€ํ†ค์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด #ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์ƒ์„ฑ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์—ฐ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. ํŒฉํ† ๋ฆฌ ํŒจํ„ด์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ผ๋ฐ˜์‚ฌ๋ฌด/๊ฒŒ์ž„/๋งˆ์ผ€ํŒ… ์šฉ๋„๋ณ„ ๊ณ ์ •IP ์ œ๊ณต, ๋งˆ์ผ€ํŒ…,๊ฒŒ์ž„ ์ ์šฉ ๊ฐ€๋Šฅ

https://xn--299ao67b9qbmsf04c.net/