216.73.216.116 TODAY : 2,765

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

 > 

PHP - ์ค‘๊ธ‰

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

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 04 ์‹ฑ๊ธ€ํ†ค(Singleton), ํŒฉํ† ๋ฆฌ(Factory) ํŒจํ„ด ์†Œ๊ฐœ
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-08-08 20:55:58
์กฐํšŒ์ˆ˜ 10
- ์„ค๋ช…

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



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

uploadImage

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



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

uploadImage

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


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


PHP

<?php
class Database
{
    private static $instance = null;

    private function __construct()
    {
        // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋กœ์ง
    }

    public static function getInstance()
    {
        if (self::$instance == null) {
            self::$instance = new Database();
        }
        return self::$instance;
    }

    public function query($sql)
    {
        // ์ฟผ๋ฆฌ ์‹คํ–‰ ๋กœ์ง
        echo "Executing query: " . $sql;
    }
}

$db1 = Database::getInstance();
$db1->query("SELECT * FROM users");

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

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



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

uploadImage

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


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


PHP

<?php
interface Product
{
    public function getName();
}

class A_Product implements Product
{
    public function getName()
    {
        return "Product A";
    }
}

class B_Product implements Product
{
    public function getName()
    {
        return "Product B";
    }
}

class ProductFactory
{
    public static function createProduct($type)
    {
        switch ($type) {
            case 'A':
                return new A_Product();
            case 'B':
                return new B_Product();
            default:
                throw new Exception("Invalid product type.");
        }
    }
}

$productA = ProductFactory::createProduct('A');
echo $productA->getName(); // Product A

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



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

uploadImage

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



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

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