2025. 8. 8. 20:54ㆍ프로그램/PHP 중급
📚 PHP 중급 - 6주차: OOP 심화 및 디자인 패턴 소개 - 04 싱글톤(Singleton), 팩토리(Factory) 패턴 소개

디자인 패턴이란 무엇인가요

디자인 패턴은 소프트웨어 설계에서 반복적으로 발생하는 문제들을 해결하기 위한 검증된 해결책입니다. 코드를 더 효율적이고, 재사용 가능하며, 유지보수하기 쉽게 만드는 데 도움을 줍니다. 이번 시간에는 여러 패턴 중에서도 가장 기본적이면서도 중요한 #싱글톤 패턴과 #팩토리 패턴에 대해 알아보겠습니다.
싱글톤(Singleton) 패턴

#싱글톤 패턴은 클래스의 인스턴스를 단 하나만 생성하도록 보장하는 패턴입니다. 이 하나의 인스턴스를 애플리케이션 어디서든 접근할 수 있도록 제공합니다. 주로 데이터베이스 연결, 로깅 클래스 등 시스템 전체에서 공유되어야 하는 객체를 만들 때 사용됩니다.
싱글톤 패턴 구현 예제
<?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) 패턴

#팩토리 패턴은 객체 생성 로직을 별도의 클래스(팩토리)로 분리하는 패턴입니다. 즉, 어떤 객체를 생성할지 클라이언트(호출자)가 직접 결정하지 않고, 팩토리에 요청하여 객체를 '만들어' 받습니다. 이를 통해 객체 생성 코드를 한 곳에 모아 관리하고, 새로운 객체 타입이 추가되어도 기존 코드를 변경할 필요 없이 유연하게 확장할 수 있습니다.
팩토리 패턴 구현 예제
<?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
?>
싱글톤 패턴과 팩토리 패턴의 차이점

두 패턴 모두 객체 생성과 관련이 있지만, 목적이 다릅니다. #싱글톤은 클래스의 인스턴스를 단 하나만 존재하도록 보장하는 것이 핵심입니다. 반면 #팩토리 패턴은 어떤 객체를 만들지 생성 로직을 분리하여 유연성을 확보하는 것이 목적입니다. 팩토리 패턴으로 생성된 객체는 여러 개일 수 있습니다.
일반사무/게임/마케팅 용도별 고정IP 제공, 마케팅,게임 적용 가능
https://xn--299ao67b9qbmsf04c.net/
VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN
국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이
vpn.luzensoft.com
'프로그램 > PHP 중급' 카테고리의 다른 글
| 📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 02 간단한 MVC 구조로 게시판 리팩토링 (0) | 2025.08.10 |
|---|---|
| 📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 01 MVC (Model-View-Controller) 개념 (0) | 2025.08.09 |
| 📚 PHP 중급 - 6주차: OOP 심화 및 디자인 패턴 소개 - 03 정적 속성/메서드 (static) (0) | 2025.08.07 |
| 📚 PHP 중급 - 6주차: OOP 심화 및 디자인 패턴 소개 - 02 트레이트 (Trait) (0) | 2025.08.06 |
| 📚 PHP 중급 - 6주차: OOP 심화 및 디자인 패턴 소개 - 01 추상 클래스, 인터페이스 (0) | 2025.08.04 |