Ich habe mich eine Weile für Designmuster interessiert und angefangen, "Head First Design Patterns" zu lesen. Ich begann mit dem ersten Muster, das als "Strategie" -Muster bezeichnet wurde. Ich ging das in den folgenden Bildern dargestellte Problem durch und versuchte zunächst, selbst eine Lösung vorzuschlagen, damit ich die Bedeutung des Musters wirklich erfassen konnte.
Meine Frage ist also, warum meine Lösung für das unten stehende Problem nicht gut genug ist. Was sind die guten / schlechten Punkte meiner Lösung gegenüber dem Muster? Was macht das Muster eindeutig zur einzig praktikablen Lösung?
MEINE LÖSUNG
Elternklasse: ENTE
<?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/>");
}
}
}
?>
Vererbungsklasse: MallardDuck
<?php
class MallardDuck extends Duck
{
function MallardDuck()
{
$this->quackable = 1;
$this->swimmable = 1;
}
function display()
{
echo "A Mallard Duck Looks Like This<BR/>";
}
}
?>
Vererbungsklasse: 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/>";
}
}