Sono stato interessato a modelli di design per un po 'e ho iniziato a leggere "Head First Design Patterns". Ho iniziato con il primo modello chiamato pattern "Strategia". Ho affrontato il problema descritto nelle immagini sottostanti e ho prima cercato di proporre una soluzione da solo in modo da comprendere davvero l'importanza del modello.
Quindi la mia domanda è: perché la mia soluzione al problema qui sotto non è abbastanza buona. Quali sono i lati positivi / negativi della mia soluzione rispetto al modello? Ciò che rende chiaramente il modello l'unica soluzione praticabile?
LA MIA SOLUZIONE
Classe genitore: DUCK
<?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 EREDITARIA: 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 EREDITARIA: 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/>";
}
}