Factory

<?php

abstract class AbstractClass
{
 abstract protected function gets();

 public function out()
 {
   echo($this->gets());
 }
}

class creator extends AbstractClass{
 protected function gets()
 {
   return "call get\n";
 }
}

class Factory extends creator
{
  function __construct()
  {
    $f = new creator();
    $f->out();
  }
}

new Factory();

オブジェクトの生成をサブクラスで行う。
オブジェクトの詳細を隠して、
生成と実行を別々で行う。
あってるのか微妙。