PHP에서 일반적으로 사용되는 세 가지 디자인 패턴인 싱글톤 디자인 패턴, 팩토리 디자인 패턴, 관찰자 디자인 패턴을 소개합니다.
이 글에서는 PHP에서 가장 일반적으로 사용되는 세 가지 디자인 패턴인 싱글턴 디자인 패턴, 팩토리 디자인 패턴, 관찰자 디자인 패턴에 대해 간략하게 소개합니다. 이것들은 모두 개인적인 경험 요약입니다. 여러분이 좋아하길 바랍니다
이 기사는 PHP에서 일반적으로 사용되는 세 가지 디자인 패턴에 대한 메모이자 요약입니다. 어떤 언어를 사용하여 개발하든 디자인 패턴은 거의 항상 사용됩니다. . 디자인 패턴이 필요한 이유는 무엇입니까? 탄생은 우리 개발자들에게 어떤 역할과 의미를 갖는가?
iOS를 개발하시는 분들은 디자인 패턴에 익숙하실 거라 믿습니다. 예를 들어 싱글턴 디자인 패턴, 팩토리 디자인 패턴, Observer 패턴, MVC 프레임워크 디자인 패턴 등이 있습니다.
다음으로 PHP에서 가장 일반적으로 사용되는 세 가지 디자인 패턴인 싱글턴 디자인 패턴, 팩토리 디자인 패턴, 관찰자 디자인 패턴을 배워보겠습니다.
단일 케이스 디자인 패턴
소위 단일 케이스 패턴은 이 클래스의 인스턴스가 애플리케이션에 최대 한 개만 존재한다는 것을 의미합니다. 한번 생성되면 항상 메모리에 존재합니다!
싱글턴 디자인 패턴은 데이터베이스 클래스 디자인에 자주 사용됩니다. 싱글턴 패턴은 여러 데이터베이스 연결이 열리는 것을 방지하기 위해 데이터베이스에 한 번만 연결하는 데 사용됩니다.
싱글턴 클래스는 다음과 같은 특성을 가져야 합니다.
싱글턴 클래스는 직접 인스턴스화로 생성할 수 없으며 클래스 자체에 의해서만 인스턴스화될 수 있습니다. 따라서 이러한 제한적인 효과를 얻으려면 constructor를 비공개로 표시하여 클래스가 인스턴스화되지 않도록 해야 합니다.
클래스 인스턴스를 저장하고 인스턴스에 액세스할 수 있는 공용 정적 메서드를 노출하려면 전용 정적 멤버 변수가 필요합니다.
PHP에서는 다른 사람이 싱글톤 클래스 인스턴스를 복제하는 것을 방지하기 위해 일반적으로 빈 개인 clone()
메소드가 제공됩니다.
싱글턴 패턴의 예:
<?php /** * Singleton of Database */ class Database { // We need a static private variable to store a Database instance. privatestatic $instance; // Mark as private to prevent it from being instanced. privatefunctionconstruct() { // Do nothing. } privatefunctionclone() { // Do nothing. } publicstatic functiongetInstance() { if (!(self::$instanceinstanceofself)) { self::$instance = newself(); } returnself::$instance; } } $a =Database::getInstance(); $b =Database::getInstance(); // true var_dump($a === $b);
Factory 디자인 패턴
Factory 디자인 패턴은 다양한 입력 매개변수 또는 애플리케이션 구성을 기반으로 해당 클래스를 인스턴스화하고 반환하도록 특별히 설계된 클래스를 만드는 데 사용되는 경우가 많습니다.
예를 들어 직사각형과 원이 동일한 메소드를 가지고 있다고 가정합니다. 그런 다음 기본 클래스에서 제공하는 API를 사용하여 인스턴스를 생성하면 모두 매개변수를 전달하여 해당 클래스의 인스턴스를 자동으로 생성합니다. 둘레와 면적.
<?php interfaceInterfaceShape { functiongetArea(); functiongetCircumference(); } /** * 矩形 */ class Rectangle implementsInterfaceShape { private $width; private $height; publicfunctionconstruct($width, $height) { $this->width = $width; $this->height = $height; } publicfunctiongetArea() { return $this->width* $this->height; } publicfunctiongetCircumference() { return 2 * $this->width + 2 * $this->height; } } /** * 圆形 */ class Circle implementsInterfaceShape { private $radius; functionconstruct($radius) { $this->radius = $radius; } publicfunctiongetArea() { return M_PI * pow($this->radius, 2); } publicfunctiongetCircumference() { return 2 * M_PI * $this->radius; } } /** * 形状工厂类 */ class FactoryShape { publicstatic functioncreate() { switch (func_num_args()) { case1: return newCircle(func_get_arg(0)); case2: return newRectangle(func_get_arg(0), func_get_arg(1)); default: # code... break; } } } $rect =FactoryShape::create(5, 5); // object(Rectangle)#1 (2) { ["width":"Rectangle":private]=> int(5) ["height":"Rectangle":private]=> int(5) } var_dump($rect); echo "<br>"; // object(Circle)#2 (1) { ["radius":"Circle":private]=> int(4) } $circle =FactoryShape::create(4); var_dump($circle);
Observer 디자인 패턴
Observer 패턴은 매우 일반적인 디자인 패턴입니다. 올바르게 사용하면 프로그램에 큰 편리함을 가져다 줄 것입니다. 잘못 사용하면 미래 세대에 유지하기 어려운 아이디어가 생길 것입니다.
관찰자 패턴이란 무엇인가요? 객체는 다른 객체인 관찰자가 자신을 등록할 수 있도록 하는 메서드를 제공하여 자신을 관찰 가능하게 만듭니다. 관찰 가능한 객체가 변경되면 등록된 관찰자에게 메시지를 보냅니다. 이러한 관찰자는 이 정보를 사용하여 관찰 가능한 객체와 독립적인 작업을 수행합니다. 결과적으로 객체는 이유를 이해하지 않고도 서로 대화할 수 있습니다. 관찰자 패턴은 클래스가 다른 클래스의 상태를 관찰할 수 있도록 하는 이벤트 시스템입니다. 관찰된 클래스의 상태가 변경되면 관찰 클래스는 알림을 받고 해당 조치를 취할 수 있습니다. 구성 요소 간의 긴밀한 결합을 방지하는 기능이 있습니다. 아래 예시를 보시면 이해가 되실 거에요!
아아아아위 내용은 PHP에서 일반적으로 사용되는 세 가지 디자인 패턴인 싱글톤 디자인 패턴, 팩토리 디자인 패턴, 관찰자 디자인 패턴을 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6
시각적 웹 개발 도구