English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP에서 싱글턴 패턴과 팩토리 패턴에 대한 설명

단例 모드 개념

단例 모드는 전체 애플리케이션에서 클래스가 하나의 객체 인스턴스만 가지는 디자인 패턴입니다.

단例 모드의 특징

클래스는 전체 애플리케이션에서 하나의 인스턴스만 가집니다

클래스는 이 인스턴스를 자체적으로 생성해야 합니다

이 인스턴스를 전체 시스템에 제공해야 합니다

PHP에서 단例 모드 사용의 이유

저는 PHP에서 대부분의 작업이 mysql, redis, memcache 등 다양한 관계형 및 비관계형 데이터베이스와의 상호작용을 포함하여 수행됩니다. 따라서 애플리케이션에서는 많은 데이터베이스 연결 작업이 발생하며, 단例 모드를 사용하지 않으면 매번 new 작업을 수행해야 하며, 매번 new를 수행하면 많은 메모리 및 시스템 자원이 소모되며, 데이터베이스 연결을 열고 닫는 것은 데이터베이스에 대한 극대의 시험과 낭비입니다.

클래스의 유일한 인스턴스를 저장하는 정적 멤버 변수가 필요합니다(일반적으로 $instance가 비공개 변수입니다)

생성자와克隆 함수는 비공개로 선언되어야 하며, 외부 프로그램이 클래스를 new로 생성하여 단例 모드의 의미를 잃지 않도록 합니다

이 인스턴스에 대한 접근을 제공하는 공개静态 메서드를 제공해야 하며, 유일한 인스턴스의 참조를 반환해야 합니다

//디자인 패턴
//단例 모드는 동일한 객체를 사용합니다
//class Ren
//{
// public $name;
// private static $dx; //객체를 저장합니다
//
// private function __construct()
// {
//
// }
//
// public static function DuiXiang()
// {
//  if(empty(self::$dx))
//  {
//   self::$dx = new Ren();
//  }
//  return self::$dx;
// }
//}
//
//$r = Ren::DuiXiang();
//생성자를 비공개로 변경합니다
//객체를 간접적으로 생성하는 메서드를 만듭니다
//이 메서드 안에 제한을 추가합니다

팩토리 클래스

은 다른 객체를 생성하기 위한 메서드를 포함한 클래스를 의미하며, 팩토리 클래스는 다양성 프로그래밍에서 매우 중요합니다. 이는 클래스를 동적으로 대체하고 설정을 수정할 수 있게 하여, 애플리케이션을 더 유연하게 만듭니다. 고급 PHP 개발자는 팩토리 패턴을 잘 이해해야 합니다.

공장 모델은 일반적으로 유사 인터페이스를 가진 다른 클래스를 반환하는 데 사용되며, 공장의 일반적인 사용법은 다양한 제공자를 생성하여, 응용 프로그램 로직이나 구성 설정에 따라哪一个 클래스를 인스턴스화 할지 결정할 수 있게 해줍니다. 예를 들어, 이러한 제공자를 사용하여 클래스를 확장할 수 있으며, 응용 프로그램의 다른 부분을 재구성하지 않아도 됩니다. 이렇게 하면 새로 확장된 이름을 사용할 수 있습니다.

일반적으로, 공장 모델은 중요한 생성자가 있으며, 일반 원칙에 따라 'Factory'라는 이름으로 명명됩니다. 그러나 이는 원칙에 불과하며, 공장 메서드는 임의의 이름을 가질 수 있으며, 이는 임의의 데이터 매개변수를 받을 수 있으며, 반드시 객체를 반환해야 합니다.

class YunSuan
{
 public $a;
 public $b;
 function Suan()
 {
  echo "두 수를 계산합니다";
 }
class gongchang
{ //기능 : 매개변수를 제공하여 객체를 반환합니다.
 static function chanpin($name)
 {
  switch($name)
  {
   case "'+:
    return new jia();
    break;
   case "-";
    return new jian();
    break;
  }
 }
}
$a=gongchang::chanpin("+");

이以上就是 본 문서의 전체 내용입니다. 본 문서의 내용이 여러분의 학습이나 업무에 도움이 되길 바랍니다. 또한,呐喊 교본에 많은 지원을 부탁드립니다!

공지: 본 문서의 내용은 인터넷에서 가져왔으며, 저작권은 원 저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용입니다. 이 사이트는 저작권을 소유하고 있지 않으며, 인공적인 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반이 의심되는 내용을 발견하면 notice#w로 이메일을 보내 주세요.3codebox.com에 이메일을 보내면(#을 @으로 변경해야 합니다.) 신고하고 관련 증거를 제공하시면, 사실이 확인되면 이 사이트는 즉시 위반 내용을 삭제할 것입니다.

좋아하는 것