ホームページ  >  記事  >  バックエンド開発  >  PHPファクトリーパターンの例

PHPファクトリーパターンの例

无忌哥哥
无忌哥哥オリジナル
2018-06-28 16:11:491229ブラウズ

* シングルトン モード: 単一タイプの一意のインスタンス オブジェクトを作成するために使用されます

* ファクトリ モード: 複数のタイプの複数のインスタンス オブジェクトを作成するために使用されます

//形状クラスの宣言

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;
                
        }
    }
}

//四角形クラスを宣言します

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;
    }
}

//三角形クラスを宣言します

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;
    }
}

//従来の new キーワードを使用する代わりに、静的メソッドを使用して形状クラスをインスタンス化します

//さまざまな形状タイプのパラメータに従って、さまざまなクラスをインスタンス化し、さまざまなオブジェクトを生成します

$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();

以上がPHPファクトリーパターンの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。