ホームページ  >  記事  >  バックエンド開発  >  PHP デザイン パターン: PHP ファクトリ パターンの概要 (コード付き)

PHP デザイン パターン: PHP ファクトリ パターンの概要 (コード付き)

不言
不言オリジナル
2018-08-04 14:24:351866ブラウズ

この記事の内容は、PHP デザイン パターンに関するものです。PHP ファクトリー パターン入門 (コード付き)。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。 。

ファクトリ パターンは、クラスのインスタンス化の詳細を非表示にし、一連のクラスに同じインスタンス化メソッドを使用するメソッドです。これにより、同じインターフェイスを実装するより多くのクラスのオブジェクトを作成する方法を簡単に拡張できます。
アプリケーション シナリオの例:
1) オンライン支払い
WeChat 支払い、Alipay 支払い、UnionPay 支払いなど、多くの支払い方法があります。ユーザーの選択に応じて、対応する支払い方法が採用されます。 ##2 ) 訪問統計
より複雑なビジネスを伴うプロジェクトでは、ユーザーは記事へのアクセス、著者へのアクセス、記事ディレクトリへのアクセスなど、さまざまなオブジェクトにアクセスします。アクセス記録は同じですが、記録される情報は異なります

ファクトリ パターンの原則:

まず、複数のオブジェクトの同じ動作に基づいてインターフェイスを設計し、次にこれらのクラスにこのインターフェイスを実装させ、インスタンス化ファクトリを作成します。インスタンス化ファクトリは、工場 さまざまなタイプ。

ファクトリ モードの具体的な実装:

/*
 *  形状接口
 */interface Shape{
    public function area();}/*
 * 长方形类,实现了形状接口
 */class Rectangle implements Shape{
    private $long;    private $width;    function __construct($long,$width)
    {
        $this->long = $long;        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return $this->long * $this->width;
    }
}/*
 * 正方形类,实现了形状接口
 */class Square implements Shape{
    private $width;    function __construct($width)
    {
        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pow($this->width,2);
    }
}/*
 * 圆形类,实现了形状接口
 */class Circle implements Shape{
    private $radiu;    function __construct($radiu)
    {
        $this->radiu = $radiu;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pi()*pow($this->radiu,2);
    }
}class ShapeFactory{
    /*
     * 获取实例化的形状对象
     * ...$args 表示接受不限个数的参数
     */
    public function getShpae(...$args)
    {
        /*
         * 第一个参数为形状名,后面的参数为形状的尺寸
         */
        switch($args[0])
        {            case 'Rectangle':                return new Rectangle($args[1],$args[2]);            break;            case 'Square':                return new Square($args[1]);            break;            case 'Circle':                return new Circle($args[1]);            break;
        }        return null;
    }
}$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area();
print_r($area);/*
Array
(
    [0] => 6
    [1] => 4
    [2] => 12.566370614359
)
*/

おすすめの関連記事:

php でファイルの第 1 レベルのディレクトリを取得する方法 (純粋なコード)

php経度と緯度を使用して 2 点間の距離を計算する方法 (純粋なコード)

以上がPHP デザイン パターン: PHP ファクトリ パターンの概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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