클래스에 인스턴스가 하나만 있는지 확인하고 이에 대한 전역 액세스 지점을 제공하세요.
싱글턴 패턴에는 세 가지 특징이 있습니다.
1. 클래스에는 인스턴스가 하나만 있습니다
2. 이 인스턴스를 스스로 생성해야 합니다
3. 이 인스턴스를 전체 시스템에 직접 제공해야 합니다
1. 싱글톤 패턴 구조도
2. 싱글턴 모드의 주요 역할
싱글톤은 클라이언트가 유일한 인스턴스에 액세스할 수 있도록 하는 인스턴스 작업을 정의합니다. 인스턴스는 클래스 메소드입니다. 유일한 인스턴스 생성을 담당합니다.
3. 싱글턴 모드의 장점
1. 고유한 인스턴스에 대한 액세스 제어
2. 네임스페이스를 줄입니다. 싱글톤 모드는 전역 변수를 개선한 것입니다. 고유한 인스턴스를 저장하는 전역 변수로 네임스페이스를 오염시키는 것을 방지합니다
3. 싱글톤 클래스는 하위 클래스를 가질 수 있으며 작동 및 표현의 본질을 허용합니다. 그리고 이 확장 클래스의 인스턴스를 사용하여 애플리케이션을 구성하는 것은 매우 쉽습니다. 필요한 클래스의 인스턴스를 사용하여 런타임에 애플리케이션을 구성할 수 있습니다.
4. 가변 개수의 인스턴스 허용(다중 인스턴스 모드)
5. 수업 운영보다 유연함
4. 싱글톤 모드 적용 시나리오
1. 클래스가 하나의 인스턴스만 가질 수 있고 클라이언트가 잘 알려진 액세스 포인트에서 액세스할 수 있는 경우
2. 이 인스턴스만 서브클래싱을 통해 확장 가능해야 하는 경우. 그리고 사용자는 코드를 변경하지 않고도 확장된 인스턴스를 사용할 수 있어야 합니다.
5. 싱글톤 모드 및 기타 모드】
팩토리 메서드 패턴: 싱글톤 패턴은 팩토리 패턴을 사용하여 자체 인스턴스를 제공합니다.
추상 팩토리 패턴(추상 팩토리 패턴): 추상 팩토리 패턴은 싱글톤 패턴을 사용하여 특정 팩토리 클래스를 싱글톤 클래스로 설계할 수 있습니다.
빌더 모드(Builder mode): 구성 모드는 특정 구성 클래스를 싱글톤 모드로 설계할 수 있습니다.
5. 싱글톤 모드 PHP 예제
<?php /** * 懒汉式单例类 */ class Singleton { /** * 静态成品变量 保存全局实例 */ private static $_instance = NULL; /** * 私有化默认构造方法,保证外界无法直接实例化 */ private function __construct() { } /** * 静态工厂方法,返还此类的唯一实例 */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Singleton(); } return self::$_instance; } /** * 防止用户克隆实例 */ public function __clone(){ die('Clone is not allowed.' . E_USER_ERROR); } /** * 测试用方法 */ public function test() { echo 'Singleton Test!'; } } /** * 客户端 */ class Client { /** * Main program. */ public static function main() { $instance = Singleton::getInstance(); $instance->test(); } } Client::main(); ?>
위는 PHP를 사용하여 싱글턴 모드를 구현하는 코드입니다. 또한 싱글턴 모드에 대한 몇 가지 개념적 차이점이 있어 모든 분들의 학습에 도움이 되기를 바랍니다.