PHP 패턴 디자인 싱글톤 패턴
패턴디자인이란? 초보자들은 처음에는 이 고상한 이름에 겁을 먹게 될 것입니다. 프로그래밍 경험이 풍부한 베테랑에게 패턴 디자인은 어디에나 있습니다. 많은 접촉 프레임워크는 다양한 패턴을 기반으로 설계되었습니다. 간단히 말해서, 코드를 작성하는 과정에서 처음 접하게 되는 것은 프로세스 지향적이고 단순하며 기본적인 프로그래밍입니다. 이때 우리가 자주 추구하는 것은 코드가 특정 기능을 달성할 수 있으면 모든 것이 잘 될 것이라는 것입니다. 코드가 얼마나 중복되는지, 재사용이 가능한지, 얼마나 효율적인지는 중요하지 않습니다. 코드가 기능을 달성할 수 있다면 말이죠. 그러나 실제로 실제로 적용되고 모든 사람이 더 많이 채택하는 것은 팀 개발에 효율적이고 재사용이 가능하며 쉬운 코드입니다. 이러한 요소를 바탕으로 연습하듯이 그냥 함수 이름을 지정하고 스크립트를 배치할 수는 없습니다. 패턴 디자인 지침은 사람들이 코드를 구성하고, 재사용 가능한 코드를 얻고, 다른 사람이 코드를 더 쉽게 이해할 수 있도록 만들고, 코드 신뢰성을 보장할 수 있는 아이디어를 제공합니다.
모든 패턴 디자인에는 싱글턴 패턴, 팩토리 패턴, 등록 트리 패턴 3가지 기본 디자인 패턴이 있는데, 오늘은 이 패턴을 기반으로 하는 경우가 많습니다.
싱글턴 패턴이란 무엇인가요?
이 이름을 보면 싱글톤 패턴은 전체 애플리케이션에서 객체 인스턴스가 하나만 존재하는 디자인 패턴을 의미한다는 것을 쉽게 이해할 수 있습니다.
싱글턴 패턴을 사용하는 이유는 무엇인가요?
PHP는 종종 데이터베이스를 다루며, 애플리케이션에서 연결 개체를 자주 설정하고 새로운 작업을 수행하면 많은 양의 시스템 메모리 리소스가 소모됩니다. 우리가 보고 싶은 것이 아닙니다. 또한 팀 협력 프로젝트에서 싱글톤 모드는 서로 다른 프로그래머가 자신의 개체를 새로 작성하여 인위적인 시스템 소비를 유발하는 것을 효과적으로 방지할 수 있습니다.
싱글톤 모드는 어떻게 설정하나요?
이 문제를 보면 훌륭한 프로그래머라면 선배들의 경험을 기다리기보다는 요구사항에 맞춰 싱글톤 패턴을 만들어내려고 노력할 가능성이 높다고 생각합니다. 싱글턴 패턴이 어떤 패턴인지 알려주는 다른 블로거들과 달리, 저는 객체지향 프로그래밍에 대한 기본적인 경험이 있는 여러분과 함께 어떻게 싱글턴 패턴을 직접 구축할지 고민해 보는 것을 선호합니다.
먼저 제목부터 살펴보겠습니다. 싱글턴 패턴은 객체 인스턴스가 하나만 있는 디자인 패턴입니다. 이것은 매우 고통스럽습니다. 우리가 일반적으로 만드는 클래스는 많은 객체를 생성할 수도 있고 객체를 생성할 수 없는 경우도 있습니다(추상 클래스). 객체를 생성하려면 클래스가 필요하며 추상 클래스일 수 없습니다. 이 클래스는 다른 사람이 함수를 여러 번 생성하는 것을 방지하기 위한 것입니다. 우리는 자연스럽게 생성자부터 시작하는 것을 고려했습니다. 그러나 각각의 새로운 작업은 생성자를 호출하므로 객체 인스턴스가 여러 번 생성됩니다. 이는 우리의 원래 디자인 의도에 어긋납니다. 이 문제를 해결하려면 여기에서 생성자를 private 또는 protected로 선언해야 합니다.
생성자가 private 또는 protected로 선언되면 new 메소드를 통해 인스턴스 객체를 생성할 수 없게 됩니다. 그리고 우리는 이 처리 단계 후에 문제 해결에 대한 전망이 분명해졌음을 발견했습니다. 왜? new 메소드를 통해서는 객체 인스턴스를 생성할 수 없기 때문에 클래스 내의 메소드를 통해서만 객체 인스턴스를 생성할 수 있습니다. 이때 우리는 흥미로운 닭이냐 달걀이냐의 문제에 직면하게 됩니다. 우리는 객체를 생성한 후 객체의 메소드를 호출하는 경우가 많습니다. 이때 객체를 생성하기 위해서는 클래스 내에서 메소드를 호출해야 합니다. 객체 생성 여부에 관계없이 호출할 수 있는 메서드에 대한 솔루션은 의심할 여지 없이 --static 키워드를 사용하는 것입니다.
클래스 내에서 정적 메서드를 생성하면 무엇을 할 수 있나요? 주제로 돌아가기: 인스턴스 개체를 하나만 생성해야 합니다. 하나만 있는지 확인하는 방법은 무엇입니까? 이것은 매우 간단합니다. 판단해 보세요. 존재하는 경우 직접 반환하고, 존재하지 않는 경우 직접 생성하세요. 물론 이 인스턴스 객체는 클래스의 정적 속성입니다. 이 시점에서는 싱글톤 모드에서 필요한 기능이 구현됩니다. 정말 완성됐나요? 아직은요~ 이 클래스를 상속받는다면 생성자를 public으로 선언하는 것도 나쁘지 않겠죠? 그런 다음 생성자 메서드 앞에 final 키워드를 추가해야 합니다.
마지막으로 싱글톤 모드 코드를 붙여넣으면 코드 설명은 모두 위와 같습니다~~
<?<span>php </span><span>class</span><span> Single{ </span><span>public</span><span>$hash</span><span>; </span><span>static</span><span>protected</span><span>$ins</span>=<span>null</span><span>; </span><span>final</span><span>protected</span><span>function</span><span> __construct(){ </span><span>$this</span>->hash=<span>rand</span>(1,9999<span>); } </span><span>static</span><span>public</span><span>function</span><span> getInstance(){ </span><span>if</span> (self::<span>$ins</span><span> instanceof self) { </span><span>return</span> self::<span>$ins</span><span>; } self</span>::<span>$ins</span>=<span>new</span><span> self(); </span><span>return</span> self::<span>$ins</span><span>; } }</span>
싱글톤 모드 자체는 복잡하지 않지만, -깊이 있는 이해. 많은 초보자들이 여전히 한숨을 쉬고 있습니다. 젠장, 생성자가 항상 public인 것은 아닙니다~ 젠장, new를 사용하지 않고도 객체를 생성할 수 있습니다~ 사실 저자는 생성자가 public, private 또는 protected로 선언되든 관계없이 생성자가 생성된다고 말하고 싶습니다. 객체는 궁극적으로 생성될 때마다 호출됩니다. New는 항상 객체 인스턴스를 생성하는 데 사용됩니다. 싱글톤 모드도 new를 사용하여 객체를 생성하지만 위치만 클래스 외부에서 클래스 내부로 변경합니다.
마지막으로 다양하고 정교한 패턴 디자인을 개발해주신 프로그래머분들께 존경의 말씀 전하고 싶습니다~~
위 내용은 PHP 모드 디자인의 싱글턴 모드에 대한 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

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

오류의 원인은 urllib3 라이브러리의 예외 유형인 NameResolutionError(self.host,self,e)frome입니다. 이 오류의 원인은 DNS 확인에 실패했기 때문입니다. 해결을 찾을 수 없습니다. 이는 입력한 URL 주소가 정확하지 않거나 DNS 서버를 일시적으로 사용할 수 없기 때문에 발생할 수 있습니다. 이 오류를 해결하는 방법 이 오류를 해결하는 방법은 여러 가지가 있습니다. 입력한 URL 주소가 올바른지 확인하고 액세스할 수 있는지 확인하십시오. DNS 서버를 사용할 수 있는지 확인하십시오. 명령줄에서 "ping" 명령을 사용해 볼 수 있습니다. DNS 서버를 사용할 수 있는지 테스트하려면 프록시 뒤에 있는 경우 호스트 이름 대신 IP 주소를 사용하여 웹사이트에 액세스해 보세요.

매년 Apple이 iOS 및 macOS의 새로운 주요 버전을 출시하기 전에 사용자는 몇 달 전에 베타 버전을 다운로드하여 먼저 경험할 수 있습니다. 소프트웨어는 대중과 개발자 모두가 사용하기 때문에 Apple은 개발자 베타 버전의 공개 베타 버전인 개발자 버전과 공개 버전을 모두 출시했습니다. iOS 개발자 버전과 공개 버전의 차이점은 무엇인가요? 말 그대로 개발자 버전은 개발자 베타 버전이고, 퍼블릭 버전은 퍼블릭 베타 버전이다. 개발자 버전과 공개 버전은 서로 다른 대상을 대상으로 합니다. 개발자 버전은 개발자가 테스트하기 위해 Apple에서 사용합니다. 다운로드하고 업그레이드하려면 Apple 개발자 계정이 필요합니다.

Java에서 private은 "private"을 의미하며 클래스, 속성 및 메서드를 수정하는 데 사용되는 액세스 제어 수정자입니다. private으로 수정된 클래스 멤버는 클래스 자체의 메서드로만 액세스하고 수정할 수 있으며 다른 클래스(클래스의 하위 클래스 포함)에서는 액세스하고 참조할 수 없습니다. 따라서 private 수정자는 최고 수준의 보호를 갖습니다.

Python에서 self의 사용법을 소개하기 전에 먼저 Python의 클래스와 인스턴스를 소개하겠습니다. 객체 지향의 가장 중요한 개념은 클래스와 인스턴스입니다. Student 클래스로 표현됩니다. 인스턴스는 클래스를 기반으로 생성된 특정 "객체"입니다. 각 객체는 클래스에서 동일한 메서드를 상속하지만 해당 데이터는 다를 수 있습니다. 1. Student 클래스를 예로 들어 보겠습니다. Python에서 클래스는 다음과 같이 정의됩니다. classStudent(object):pass(Object)는 클래스가 상속받는 클래스를 나타냅니다.

Private은 함수가 정의된 클래스로만 함수의 접근성을 제한하는 Java 액세스 한정자입니다. 다음을 포함하여 함수는 다른 클래스에서 액세스할 수 없습니다. 이 함수는 하위 클래스에서도 액세스할 수 없습니다.

차이점: 1. Make는 Slice, Map 및 chan 유형의 데이터를 할당하고 초기화하는 데만 사용할 수 있는 반면 new는 모든 유형의 데이터를 할당할 수 있습니다. 2. 새 할당은 "*Type" 유형인 포인터를 반환하고 make는 유형인 참조를 반환합니다. 3. new에 의해 할당된 공간은 지워집니다. make가 공간을 할당한 후에는 초기화됩니다.

Java 공용 액세스 수정자를 사용하면 어디에서나 함수에 액세스할 수 있으며 공용 API를 선언하고 패키지 또는 클래스 간에 공유되는 도구 및 유틸리티를 정의하는 데 사용됩니다. 구체적인 사용법은 다음과 같습니다. 구문: 공용 반환 값 유형 함수 이름(매개변수 목록) {...} 시나리오: 어디서나 액세스해야 하는 함수, 공용 API의 메서드, 공유 도구 또는 유틸리티

아니요, 최상위 클래스를 비공개 또는 보호로 선언할 수 없습니다. 공개 또는 기본값(수정자 없음)일 수 있습니다. 수정자가 없으면 기본 액세스가 있어야 합니다. 구문 //Atoplevelclass publicclassTopLevelClassTest{ //Classbody} 최상위 클래스가 private으로 선언되면 컴파일러는 "여기에서는 private 수정자가 허용되지 않습니다."라는 오류를 보고합니다. 이는 최상위 클래스가 비공개일 수 없으며 보호된 액세스에도 동일하게 적용됨을 의미합니다.
