Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für ein PHP-Factory-Muster

Beispiel für ein PHP-Factory-Muster

无忌哥哥
无忌哥哥Original
2018-06-28 16:11:491195Durchsuche

* Singleton-Muster: wird zum Erstellen eines eindeutigen Instanzobjekts eines einzelnen Typs verwendet

* Factory-Muster: wird zum Erstellen mehrerer Instanzobjekte mehrerer Typen verwendet

//Deklaration von Formklassen

class Shape
{
    //声明静态方法create,根据容器形状不同,创建不同图形类的实例
    public static function create($type,array $size=[])
    {
        //检测形状?
        switch ($type)
        {
            //长方形
            case 'rectangle':
                return new Rectangle($size[0],$size[1]);
                break;
            
            //三角形
            case 'triangle':
                return new Triangle($size[0],$size[1]);
                break;
                
        }
    }
}

//Deklarieren Sie die Rechteckklasse

class Rectangle
{
    private $width;  //宽度
    private $height; //高级
    public function __construct($witch,$height)
    {
        $this->width = $witch;
        $this->height = $height;
    }
    
    //计算长方形面积: 宽 * 高
    public function area()
    {
        return $this->width * $this->height;
    }
}

//Deklarieren Sie die Dreiecksklasse

class Triangle
{
    private $bottom;  //底边
    private $height;  //边长
    public function __construct($bottom,$height)
    {
        $this->bottom = $bottom;
        $this->height = $height;
    }
    
    //计算三角形面积:  (底 * 高) / 2
    public function area()
    {
        return ($this->bottom * $this->height)/2;
    }
}

//Verwenden Sie statische Methoden, um Formklassen zu instanziieren, anstatt das traditionelle Schlüsselwort new zu verwenden

//Instanziieren Sie je nach den verschiedenen Formtypparametern verschiedene Klassen und generieren Sie unterschiedliche Objekte

$rectangle = Shape::create('rectangle',[10,30]);
echo '长方形的面积是'.$rectangle->area();
echo &#39;<hr>&#39;;
$triangle = Shape::create(&#39;triangle&#39;,[20,50]);
echo &#39;三角形的面积是&#39;.$triangle->area();

Das obige ist der detaillierte Inhalt vonBeispiel für ein PHP-Factory-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn