>  기사  >  백엔드 개발  >  PHP 디자인 패턴: 싱글톤 패턴과 팩토리 패턴에 대한 자세한 설명

PHP 디자인 패턴: 싱글톤 패턴과 팩토리 패턴에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-07-12 14:09:491292검색

1. 싱글턴 패턴

싱글턴 패턴은 흔히 사용되는 소프트웨어 디자인 패턴입니다. 핵심 구조에는 싱글톤 클래스라는 특수 클래스가 하나만 포함되어 있습니다. 싱글톤 모드는 시스템에 클래스의 인스턴스가 하나만 있고 해당 인스턴스에 외부 세계에서 쉽게 액세스할 수 있도록 보장하여 인스턴스 수를 쉽게 제어하고 시스템 리소스를 절약할 수 있습니다. 특정 클래스의 객체 하나만 시스템에 존재하도록 하려면 싱글톤 패턴이 가장 좋은 솔루션입니다.

장점

1. 인스턴스 제어

싱글톤 패턴은 다른 개체가 자신의 싱글톤 개체 복사본을 인스턴스화하는 것을 방지하여 모든 개체가 고유한 인스턴스에 액세스하도록 보장합니다.

2. 유연성

클래스가 인스턴스화 프로세스를 제어하므로 클래스는 인스턴스화 프로세스를 유연하게 변경할 수 있습니다.

이 글에서는 주로 PHP의 single Case 모드factory 모드 관련 지식을 소개합니다. 매우 좋은 참조 값을 가지고 있습니다. 아래 편집기로 살펴보겠습니다

PHP에서 싱글턴 모드를 사용하는 이유

PHP에서 제가 하는 작업의 대부분은 mysql, redis를 포함한 다양한 데이터베이스를 다루는 것과 관련이 있습니다. , memcache 및 기타 관계형 및 비관계형 데이터베이스를 사용하므로 애플리케이션에서 데이터베이스에 연결하는 데 많은 작업이 필요합니다. 싱글톤 모드를 사용하지 않으면 매번 새로운 작업이 필요합니다. 그러나 각각의 새로운 작업은 많은 메모리 리소스와 시스템 리소스를 소비하며 데이터베이스 연결이 열리고 닫힐 때마다 데이터베이스의 큰 테스트이자 낭비입니다. 클래스의 유일한 인스턴스를 보유하는 정적 멤버 변수가 필요합니다(보통 $instance는 개인 변수입니다).

생성자

및 복제 함수는 외부 프로그램이 새 클래스에서 의미를 잃지 않도록 비공개로 선언해야 합니다. 고유한 인스턴스에 대한 참조를 반환하려면 이 인스턴스에 액세스하는 공개 정적 메서드를 제공해야 합니다

//设计模式
//单例模式 都是使用同一个对象
//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();
//把构造函数变为私有
//做了一个方法来间接造对象
//在该方法里面加限制

2. 팩토리 패턴

팩토리 패턴은 특히 다음을 사용하여 많은 수의 클래스를 인스턴스화하는 역할을 합니다. 공통 인터페이스(또는 공통 추상 상위 클래스), 매번 어떤 클래스 패턴이 인스턴스화되는지 미리 알 필요가 없습니다. 객체를 생성하기 위한 인터페이스를 정의하고 하위 클래스는 인스턴스화할 클래스를 결정합니다.

장점

팩토리 클래스는 외부 세계인 팩토리 클래스를 사용하여 어떤 특정 클래스의 객체를 생성해야 하는지 결정하는 데 필요한 논리적 판단을 담고 있습니다. 당황스러운 상황을 없애기 위해서는 "소비자" 객체에 대해서만 책임을 지면 됩니다. 이러한 객체가 어떻게 생성되고 구성되는지는 중요하지 않습니다. 각자의 책임과 권리를 명확히 하는 것은 전체 소프트웨어 아키텍처를 최적화하는 데 도움이 됩니다.

단점
팩토리 클래스는 모든 인스턴스의 생성 로직을 집중시키기 때문에 높은 응집력 책임 할당 원칙을 위반하고 모든 생성 로직을 하나의 팩토리 클래스에 집중합니다. 생성할 수 있는 클래스는 필요한 경우에만 미리 고려할 수 있습니다. 새 클래스를 만들려면 팩토리 클래스를 변경해야 합니다.
시스템의 특정 제품 카테고리 수가 계속 증가하면 팩토리 클래스에서 다양한 조건에 따라 다양한 인스턴스를 생성하도록 요구해야 할 수도 있습니다. 이러한 조건 판단과 특정 제품 유형에 대한 판단이 서로 얽혀 있어 모듈 기능의 확산을 피하기 어렵고 시스템 유지 관리 및 확장에 매우 해롭습니다.
이러한 단점은 팩토리 방식 모델에서 어느 정도 극복되었습니다.
사용 시나리오
Factory 클래스는
더 적은 개체를 생성하는 일을 담당합니다.
고객은 Factory 클래스에 전달된 매개 변수만 알고 개체를 만드는 방법(논리)에는 관심이 없습니다. 높은 응집력 책임 할당 원칙이므로 일반적으로 매우 간단한 상황에서만 사용됩니다. 일반적으로 팩토리 패턴에는 일반 원칙에 따라 Factory라는 정적 메서드인 키 구성이 있습니다. 그러나 이는 단지 원칙일 뿐입니다. 이 정적 메서드는 임의의 매개 변수를 사용할 수도 있습니다. 데이터를 반환해야 하며 객체를 반환해야 합니다.
아아아아

위 내용은 PHP 디자인 패턴: 싱글톤 패턴과 팩토리 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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