> php教程 > PHP开发 > PHP에서 Singleton 모드와 Monostate 모드 구현

PHP에서 Singleton 모드와 Monostate 모드 구현

黄舟
풀어 주다: 2016-12-21 10:54:00
원래의
1149명이 탐색했습니다.

일반적으로 클래스와 객체(클래스 인스턴스) 사이에는 일대다 관계가 있습니다. 하지만
클래스 인스턴스가 하나만 필요한 경우도 있습니다. 예를 들어, 여러 인스턴스의 다양성으로 인해 제어할 수 없는 요소가 발생합니다. 여러 인스턴스화는 리소스를 낭비하고 효율성을 저하시킵니다. 또 다른 예는 시스템에서 다른 개체를 만드는 데 사용되는 팩토리 개체입니다. , 등. 이때 이를 처리하는 더 좋은 방법은
클래스의 인스턴스를 단일로 만드는 것입니다. 이 클래스가 작업 중에 최대 하나의 인스턴스를 생성하도록 하거나(싱글톤 모드
모드) 모든 인스턴스를 일관성 있게 만드는 것입니다( 모노스테이트 모드).

PHP에서 구현된 싱글톤 모드의 예:

싱글톤 클래스 인스턴스 생성은 다음과 같습니다.
<?php
 classSingleton
 {
      privatestatic$instance;
 
      privatefunction__construct()
      {
      }
 
      publicstaticfunctioninstance()
      {
          if(self::$instance==null)
          {
              self::$instance=newSingleton();
          }
 
          returnself::$instance;
      }
 }
 ?>
로그인 후 복사

PHP에서 구현된 싱글톤에 대한 자세한 분석 PHP 패턴의 특징:
$instance=Singleton::instance();
 // 这样是错误的: $instance = new Singleton();
로그인 후 복사

1. 정적, 개인 속성: 인스턴스를 저장하는 데 사용됩니다. 정적은 클래스가 인스턴스화되지 않도록 하고

클래스 메서드에 의해 호출될 수도 있음을 보장합니다. 인스턴스화되지 않았습니다. 변경.


2. 비공개 생성자: 클래스는 이 클래스 외부에서 인스턴스화될 수 없습니다.

3. 정적 공개 메서드: 인스턴스를 생성하고 고유성을 보장합니다. static을 사용하면 인스턴스화되지 않고 메서드를 호출할 수 있습니다.

아래의 모노스테이트와 비교하여 장점은 다음과 같습니다.

1. 어떤 클래스에도 적용할 수 있으며 위의 세 가지 특성을 만족합니다.

2. 클래스가 주어지면 해당 클래스의 싱글톤 하위 클래스를 생성할 수 있습니다.

단점:

1. 싱글톤 기능은 상속될 수 없으며 해당 하위 클래스는 싱글톤 클래스가 아닙니다.

2. 사용이 불투명하므로 사용자는 싱글톤 클래스를 사용하며

new를 통해 인스턴스화할 수 없다는 점을 알아야 합니다.


Monostate 패턴의 기본 원칙은 Monostate 클래스의 모든 인스턴스가 동일한 인스턴스를 사용하도록 하는 것입니다
. 실제로 클래스의 모든 속성은 static으로 선언할 수 있습니다.


위는 PHP에서 Singleton 모드와 Monostate 모드를 구현한 내용입니다. 자세한 내용은 PHP 중국어 홈페이지를 참고해주세요. (m.sbmmt.com)!

<?php
 classmonostate
 {
      privatestatic$itsX=0;
      
      publicfunction__construct()
      {
          
      }
      
      publicfunctionsetX($x)
      {
          self::$itsX=$x;
      }
      
      publicfunctiongetX()
      {
          returnself::$itsX;
      }
 }
 ?>
로그인 후 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿