PHP 디자인 패턴 _ 등록 나무 패턴

나무를 등록하여 개체 모델에 쉽고 빠르게 액세스 할 수있는 것은, 어딘가에, 개체를 (배열에서 세계적으로 사용할 수 있습니다) "절약"할 수있는 개체를 인스턴스화, 필요한 경우에만 사용하는 개체를 저장하기 그 식별 글로벌 공유 및 교환을 목적을 해결할 수있는 경우에 직접 배열 될 수있다.

왜 등록 나무 패턴을 사용합니까?

해결하는 패턴이 전체 프로젝트 문제의 객체의 고유 인스턴스를 생성하는 방법은 싱글, 주소 공장의 모델이 방법은 새로운하여 개체의 인스턴스를 생성하지 않는 방법이다. 이 문제를 해결하기 위해 노력 레지스트라 나무 패턴? 이 질문을 고려하기 전에, 우리는 현재 직면하고있는 처음 두 모델에서 한계를 고려해야합니다. 먼저, 프로세스는 하나의 판정, 즉, 거기 오브젝트 자체의 실시의 고유 모드를 생성하는 오브젝트가 존재하는지 판단한다. , 존재하지 않는 개체가 존재 돌아 객체 반환을 만들 수 있습니다. 당신이 인스턴스 객체를 생성 할 때마다 너무 한 판사 존재해야합니다. 공장 모드 더 고려 사항은 유지 보수 문제를 확장됩니다. 일반적으로, 싱글 및 공장 모드는보다 합리적인 목표를 생성합니다. 어떻게 쉽게 호출이 객체? 그리고 같은 낙오자의 설립과 같은 프로젝트 내의 개체는 불편 전반적인 관리 제도 아를 좋아한다. 따라서, 등록 트리 패턴이 나타났다. 당신이 싱글 또는 공장 패턴 또는이 둘의 조합에 의해 생성 된 객체에 의해이든, 나에게 모든 등록 트리의 "로"입니다.

	// 싱글
	클래스 데이터베이스 {
		개인 정적 인을 $;
		공용 static 함수의 getInstance () {
			경우 (자기 instanceof를 자기 :: $의 기능) {
				반환 자기 :: $의 기능;
			}
			자기 :: $의 기능 = 새로운 자기 ();
			반환 자기 :: $의 기능;
		}
	}
	// 공장 패턴
	클래스 공장 {
		공용 static CREATEDB 함수 () {
			$ dB = 데이터베이스 ::의 getInstance ();
			등록 :: 세트 ( "TESTDB", $ DB를)
			$ DB를 반환;
		}
	}
	// 트리 패턴 등록
	클래스 등록 {
		정적 $ 개체를 보호;
		공공 정적 기능 세트 ($ 이름, $ OBJ) {
			자기 : $ 개체 [$ 이름] = $ (OBJ);
		}
		공공 기능의 get ($ 이름) {
			$ OBJ = NULL;
			만약 (는 isset (자체 : $ 개체 [$ 이름])) {
				$ OBJ = 자기 : $ 개체 [$ 이름];
			}
			$ OBJ 반환;
		}
	}
	$ objFact 새로운 공장을 () =;
	$ dB = $ objFact-> CREATEDB ();

	$ objreg = 신규 등록 ();
	$ objInfo = $ objreg->의 get ( "TESTDB");
	위해서 var_dump ($ objInfo);

  

추천

출처www.cnblogs.com/zh718594493/p/12122071.html