Draw(); echo "\n"; $circle = new Circle(); $circle->Draw(); echo "\n"; abstract class ShapeFactory { abstract function Create(); } class SquareFactory extends ShapeFactory { function Create() { return new Square(); } } class CircleFactory extends ShapeFactory { function Create() { return new Circle(); } } $squareFactory = new SquareFactory(); $circleFactory = new CircleFactory(); $a_square = $squareFactory->Create(); $a_circle = $circleFactory->Create(); $a_square->Draw(); echo "\n"; $a_circle->Draw(); echo "\n"; ?>