Estou interessado em padrões de design há algum tempo e comecei a ler "Head First Design Patterns". Comecei com o primeiro padrão chamado padrão de 'Estratégia'. Passei pelo problema descrito nas imagens abaixo e primeiro tentei propor uma solução para que eu pudesse entender a importância do padrão.
Portanto, minha pergunta é: por que minha solução para o problema abaixo não é boa o suficiente. Quais são os pontos bons / ruins da minha solução versus o padrão? O que torna o padrão claramente a única solução viável?
MINHA SOLUÇÃO
Classe pai: PATO
<?php
class Duck
{
public $swimmable;
public $quackable;
public $flyable;
function display()
{
echo "A Duck Looks Like This<BR/>";
}
function quack()
{
if($this->quackable==1)
{
echo("Quack<BR/>");
}
}
function swim()
{
if($this->swimmable==1)
{
echo("Swim<BR/>");
}
}
function fly()
{
if($this->flyable==1)
{
echo("Fly<BR/>");
}
}
}
?>
Classe herdada: MallardDuck
<?php
class MallardDuck extends Duck
{
function MallardDuck()
{
$this->quackable = 1;
$this->swimmable = 1;
}
function display()
{
echo "A Mallard Duck Looks Like This<BR/>";
}
}
?>
Classe herdada: WoddenDecoyDuck
<?php
class WoddenDecoyDuck extends Duck
{
function woddendecoyduck()
{
$this->quackable = 0;
$this->swimmable = 0;
}
function display()
{
echo "A Wooden Decoy Duck Looks Like This<BR/>";
}
}