Padrões de Projeto em PHP: 싱글톤
6397 단어 phpwebdevprogramming
O padrão de projeto que vou apresentar hoje é um padrão criacional (uma das três categoria de padrões de projeto): o 싱글톤
싱글톤을 간단하게 적용할 수 있다는 사실을 확신합니다. O Singleton preza que apenas uma instância seja retornada. Isso possui diversa aplicabilidades. Pense numa classe com funcionalidades genéricas que é utilizada em vários pontos de sua aplicação, mas que não possui um estado. Seria uma boa ideia utilizar um Singleton para essa classe, certo?
Vou explicar por etapas a construção dessa classe para objetos solitários.
Vamos voltar ao anime Naruto e finger que o único Uchiha existente realmente é o Sasuke (embora saibamos que tenha mais Uchihas no mundo do que Almeidas). 로고는 Uchiha na face da terra에 존재합니다.
final class Uchiha {
}
Ao declarar a palavra-chave
final
no inicio da classe estamos dizendo que essa classe não pode ser herdada, isto é: não pode gerar classes filhas. É isso mesmo, vamos finger que o Sasuke é estéril também (pobre Sasuke).Um dos modos efetivos de bloquear a instanciação de uma classe é impedir sua proliferação é não deixando que o metodo construtor seja invocado... e não, não adianta deixar de definir um construtor, a classe faz isso automaticamente. Uma técnica que podemos aplicar é utilizando o modificador de acesso
private
em oposição ao public
, em nosso 구성자:final class Uchiha {
private function __construct()
{
}
}
Outra situação que precisamos impedir é a clonagem do nosso Uchiha (Afinal só se clona Senjus no anime). A técnica é a mesma: 특별한 접근을 방해합니다.
final class Uchiha {
private function __construct()
{
}
private function __clone()
{
}
}
Um cenário mais atípico: PHP chamado o
__wakeup
가 없는 특별한 방법이 존재합니다. ele permite a completa construção de objetos desserializados (o Google é seu amigo). Vamos prevenir essa arte de Orochimaru tornando também o método __wakeup
프라이빗final class Uchiha {
private function __construct()
{
}
private function __clone()
{
}
private function __wakeup()
{
}
}
Por fim, vamos criar um método que permite retornar o nosso Uchiha.
final class Uchiha {
// Declaramos o atributo a ser retornado
private static ?Uchiha $instance
private function __construct()
{
}
private function __clone()
{
}
private function __wakeup()
{
}
// Método para obter a instância
public function getInstance()
{
// Garantimos que somente uma instância seja criada
if (!isset(self::$instance)) {
self::$instance = new static();
}
// Por fim retornamos a instância
return self::$instance;
}
}
// criamos nosso objeto Singleton
$sasuke = Uchiha::getInstance();
그렇지 않습니다.
Até a proxima! 😊
Reference
이 문제에 관하여(Padrões de Projeto em PHP: 싱글톤), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaetaen/padroes-de-projeto-em-php-singleton-1eel텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)