<?php
Flight interface
Interface Flyable {
function Fly ($obj);
}
The specific implementation of Flight interface class
Class Action implements flyable{
function Fly ($obj) {
if ($obj instanceof Aduck) {
Echo ' Aduck is flying<br/> ';
}else if ($obj instanceof Bduck) {
Echo ' Bduck is flying<br/> ';
}else{
Echo ' cannot fly<br/> ';
}
}
}
Base class
Class Duck {
protected $_flyaction;
Public Function __construct () {
$this->_flyaction = new Action ();
}
Public Function shape () {
echo ' duck shape ';
}
Public Function Life () {
Echo ' A duck life ';
}
}
A sub-class
Class Aduck extends Duck {
Public Function Fly () {
echo $this->_flyaction->fly ($this);
}
}
B Sub-class
Class Bduck extends Duck {
Public Function Fly () {
echo $this->_flyaction->fly ($this);
}
}
C Sub-class
Class Cduck extends Duck {
Public Function Fly () {
echo $this->_flyaction->fly ($this);
}
}
$a = new Aduck ();
$b = new Bduck ();
$c = new Cduck ();
$a->fly ();
$b->fly ();
$c->fly ();
Design mode-Interface polymorphism