>백엔드 개발 >PHP 튜토리얼 >PHP 구현 설계 패턴_php 기술의 싱글톤 패턴에 대한 자세한 설명

PHP 구현 설계 패턴_php 기술의 싱글톤 패턴에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 20:35:12788검색

【요약】

클래스에 인스턴스가 하나만 있는지 확인하고 해당 클래스에 액세스할 수 있는 전역 액세스 포인트를 제공하세요. [GOF95]

【특징】

1. 클래스에는 인스턴스가 하나만 있습니다
2. 이 인스턴스를 스스로 생성해야 합니다
3. 이 인스턴스를 전체 시스템에 직접 제공해야 합니다

【구조도】

【주인공】

Singleton은 클라이언트가 유일한 인스턴스에 액세스할 수 있도록 허용하는 인스턴스 작업을 정의합니다. 인스턴스는 클래스 메소드입니다. 유일한 인스턴스 생성을 담당합니다.

【장점과 단점】

1. 고유한 인스턴스에 대한 액세스 제어
2. 네임스페이스를 줄입니다. 싱글톤 모드는 전역 변수를 개선한 것입니다. 고유한 인스턴스를 저장하는 전역 변수로 네임스페이스를 오염시키는 것을 방지합니다
3. 싱글톤 클래스는 하위 클래스를 가질 수 있으며 작동 및 표현의 본질을 허용합니다. 그리고 이 확장 클래스의 인스턴스를 사용하여 애플리케이션을 구성하는 것은 매우 쉽습니다. 필요한 클래스의 인스턴스를 사용하여 런타임에 애플리케이션을 구성할 수 있습니다.
4. 가변 개수의 인스턴스 허용(다중 인스턴스 모드)
5. 수업 운영보다 유연함

【적용분야】

1. 클래스가 하나의 인스턴스만 가질 수 있고 클라이언트가 잘 알려진 액세스 포인트에서 액세스할 수 있는 경우
2. 이 인스턴스만 서브클래싱을 통해 확장 가능해야 하는 경우. 그리고 사용자는 코드를 변경하지 않고도 확장된 인스턴스를 사용할 수 있어야 합니다.

[싱글톤 모드 PHP 인스턴스]

코드 복사 코드는 다음과 같습니다.

/**
* 싱글톤 모드
*---------------
* @author zhaoxuejie
* @패키지 디자인 패턴
* @version v1.0 2011-12-14
​*/
싱글톤 클래스 {

//개인 정적 멤버 변수, 전역 인스턴스 저장
개인 정적 $instance = NULL;

//외부 세계가 직접 인스턴스화할 수 없도록 보장하는 비공개 구성 방법
비공개 함수 __construct(){}

//정적 메소드, 이 유형의 유일한 인스턴스를 반환합니다
공개 정적 함수 getInstance(){
if(!isset(self::$instance)){
$c = __CLASS__;
본인::$인스턴스 = 새로운 $c;
}
자체 반환::$instance;
}

//테스트 방법
공개 함수 정보(){
'확인'을 반환합니다.
}

//복제 방지
공개 함수 __clone(){
Trigger_error('복제가 허용되지 않습니다.', E_USER_ERROR);
}
}

$s = 싱글톤::getInstance();
echo $s->info();
?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.