싱글턴 패턴은 클래스의 인스턴스화를 단일 인스턴스로 제한하는 디자인 패턴입니다. 이는 시스템 전체에서 작업을 조정하는 데 정확히 하나의 개체가 필요할 때 특히 유용합니다.
싱글턴 패턴의 주요 특징
이 시나리오를 상상해 보세요
싱글턴 패턴을 더 잘 이해하기 위해, 한 사람만이 소유할 수 있는 특별한 장난감을 갖는 것처럼 더 간단한 용어로 생각해 보겠습니다. 작동 방식은 다음과 같습니다.
하나의 장난감: 매우 특별한 마술 지팡이를 상상해 보세요. 한 번에 한 명의 어린이만 이 마술 지팡이를 가질 수 있습니다. 다른 사람이 사용하고 싶다면 그 아이에게 물어봐야 합니다.
안전하게 보관하기: 이 아이는 마술봉을 안전한 장소(장난감 상자 등)에 보관하여 다른 사람이 그냥 잡고 가져갈 수 없도록 합니다.
장난감을 달라고 하기: 친구가 마술 지팡이를 갖고 놀고 싶을 때마다 특별한 아이에게 물어봐야 합니다. 아이는 공유하겠지만 언제, 어떻게 공유할지 결정할 수 있는 사람은 아이뿐입니다.
싱글턴 패턴과의 관계
하나의 인스턴스: 마술 지팡이가 하나만 있는 것처럼 싱글턴 패턴에는 클래스의 인스턴스(또는 복사본)가 하나만 있습니다. 이 클래스는 물건(장난감 등)을 만들기 위한 청사진이라고 생각하시면 됩니다.
비공개 접근: 장난감 상자(또는 생성자)는 다른 모든 사람에게 공개되지 않습니다. 이는 누구도 새로운 마술 지팡이를 만들 수 없다는 것을 의미합니다. 존재하는 지팡이 하나만 사용해야 합니다.
장난감 얻기: 누군가가 마술 지팡이(또는 클래스)를 사용하려면 특별한 문(getInstance()라는 메소드)을 통과해야 합니다. 이 문은 마술 지팡이가 이미 있는지 확인합니다. 없으면 하나 만들어서 줍니다.
PHP의 예
다음은 PHP에서 싱글톤 패턴을 간단하게 구현한 것입니다.
class MagicWand { private static $instance = null; // This is our one and only wand // This keeps anyone from making a new wand private function __construct() { } // This is the door to get the wand public static function getInstance() { if (self::$instance === null) { self::$instance = new MagicWand(); // Making the wand if it doesn't exist } return self::$instance; // Giving back the wand } public function castSpell() { echo "Casting a spell!"; } } // Using the magic wand $wand = MagicWand::getInstance(); $wand->castSpell(); // Now we can cast spells with the one and only wand!
이 비유에서:
한 아이만이 마술 지팡이를 가질 수 있는 것처럼 프로그래밍에서도 싱글턴 패턴을 활용하여 클래스의 인스턴스가 하나만 존재하도록 하고 모든 사람이 그것을 사용하고 싶을 때 요청해야 합니다!
이 패턴은 리소스를 효율적으로 관리하고 애플리케이션 전체에서 일관된 상태를 유지하는 데 도움이 되므로 소프트웨어 설계의 필수 개념입니다.
Refactoring Guru - 싱글톤 패턴
위 내용은 PHP 예제를 사용한 싱글톤 패턴 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!