Ir ao conteúdo
  • Cadastre-se
ImTheUnix

Padrão de projeto de software - bridge

Recommended Posts

Depois de muito tempo procurando na internet não achei nada sobre o Bridge em português, e todo o conteúdo disponibilizado em inglês nem sempre estava 100% certo, então resolvi criar esse tópico para ajudar a galera que esta entrando na parte de orientado a objeto em PHP.

 

1. INTRODUÇÃO AO BRIDGE

  

  O Bridge também conhecido como handle/body é um padrão de projeto usado para facilitar a comunicação de relacionamento/entidade, o seu principal uso é para desacoplar uma abstração em um conteúdo de uma entidade, fazendo assim com que a mesma entidade herde esse conteúdo para um implementador, e assim herde para outras entidades, como visto na imagem abaixo.

patternbridge1.jpg

2. QUANDO USAR

 

Quando quiser evitar uma ligação permanente entre uma abstração e sua implementação. Ou seja quando você quiser isolar um objeto abstrato sem com que ele perca seu sentido. Lembrando que a implementação de uma abstração não devem ter impacto direto sobre o software do cliente.

 

3. QUANDO DEVE ACONTECER

 

Tanto a abstração quanto a implementação devem ser extensíveis através de herança, ambos devem ter características similares (Ex: Um animal possui boca, assim como os tigres).

 

4. ESTRUTURA GENÉRICA

 

A estrutura genérica do padrão Bridge é você aplicar uma característica de operação para uma tabela como exemplo, e então herdar essa característica para uma implementação (Ex: Tenho uma agencia bancaria e quero separar meus dados em dois tipos, dados públicos e dados privados, primeiramente eu crio uma interface para o usuário e dentro dela crio uma função

public function getDado($tipo);

agora preciso criar uma interface para o tratar meu dado recebido e dentro crio outra função

public function pesqDado();

agora precisamos criar uma classe que implemente a minha interface de usuário

class pessoa implements Pessoal{
	public function getDado($tipo){

a função 'getDado' vai chamar a minha instância selecionada, que no caso foi 'pessoa', agora precisamos criar uma variável que receba os valores dos dados da minha variável $tipo,

$p1 = new $tipo;
$p1 -> pesqDado();

e finalmente iremos separar a abstração do implementador, no caso o dado publico do dado privado,

class dadosPublico implements Dados{
	public function pesqDado(){
		echo"Dados públicos";
 }
}
class dadosPrivados implements Dados{
	public function pesqDado(){
		echo "Dados privado";
 }
}

para melhor entendimento do código veja a imagem abaixo).

 

Screenshot_28.png

 

 

5. IMPLEMENTAÇÃO

 

Para concluir o código devemos simplesmente criar uma variavel que vai receber uma nova interface 'pessoa' e em seguida definir à esta variavel o 'getDado' sendo 'dadosPublico' ou 'dadosPrivado' .

 

Screenshot_24.png

Podemos implementar várias variaveis, alternando ou não dados privados e públicos.

Screenshot_25.png

Criando então o seguinte resultado.

Screenshot_29.png

 

 

(Obs: O nome, telefone e CPF são fictícios).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×