Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Beleza galera do imasters
Estou estudando este princípio OCP, e me deparei com um exemplo que encontrei na net.. e para resolver ele estou com uma dúvida
O exemplo é esse
class Debito
{
/**
* @param $valor int
* @param $tipo TipoDebito
*/
public function Debitar($valor, TipoDebito $tipo)
{
if ($tipo instanceOf Poupanca)
{
// Debita Poupanca
}
if ($tipo instanceOf ContaCorrente)
{
// Debita ContaCorrente
}
}
}abstract class Debito
{
public abstract function Debitar($valor);
}
class DebitoContaCorrente extends Debito
{
public function Debitar($valor)
{
// Debita Conta Corrente
}
}
class DebitoContaPoupanca extends Debito
{
public function Debitar($valor)
{
// Debita Conta Poupança
}
}
class DebitoContaInvestimento extends Debito
{
public function Debitar($valor)
{
// Debita Conta Investimento
}
}
Ok.. foi feito a refatoração e agora está bunitinho.. mas agora para realizar este debito como seria ?eu pensei na seguinte maneira.
class ContaPoupanca
{
public function realizarDebito($valor)
{
$debito = new DebitoContaPoupanca;
$debito->debitar($valor);
}
public function sacar()
{
// realizar saque
}
// ...
}
#### para usar uma classe conta poupança
$conta = new ContaPoupanca;
$conta->realizarDebito();Estamos falando de um exemplo simples. Mas se fosse algo mais complexo, onde vários participantes um consumindo o outro, para somente para realizar um processo?
Algum perito em POO poderia ajudar nesta Dúvida, desde já agradeço
Carregando comentários...