ホームページ  >  記事  >  バックエンド開発  >  Power Academy デザイン パターン PHP ビデオ チュートリアルの共有

Power Academy デザイン パターン PHP ビデオ チュートリアルの共有

黄舟
黄舟オリジナル
2017-08-30 10:18:371220ブラウズ

「Power Academy デザイン パターン PHP ビデオ チュートリアル」では、まずデザイン パターンを紹介し、デザイン パターンの用途と重要性を伝え、デザイン パターンが適用される場面について詳しく説明します。次に、コード例を通していくつかの設計パターンを紹介します。最後に、包括的かつ詳細なケース分析では、デザイン パターンを使用して新しいアプリケーションを計画する方法、これらのパターンを PHP 言語で記述する方法、ビデオで紹介されているデザイン パターンを使用して既存のコード ブロックを変更およびリファクタリングする方法を示します。

Power Academy デザイン パターン PHP ビデオ チュートリアルの共有

コース再生アドレス: http://www.php.cn/course/424.html

教師の指導スタイル:

教師の講義はシンプル、明瞭、階層的です。 、連動性、厳密な議論、厳密な構造、論理的な思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御します。教師の講義を聞くことで、生徒は知識を学ぶだけでなく思考訓練を受け、教師の厳しい学問的姿勢に影響を受けます。

このビデオでより難しい点は、ファクトリ メソッド パターンであり、詳細に説明されています:

1 パターンの概要

オブジェクトを作成するためのインターフェイスを定義し、インスタンス化するクラスとファクトリ メソッドをサブクラスに決定させます。クラスのインスタンスをそのサブクラスに遅延させます。

2 パターン内の役割

2.1 抽象ファクトリ (作成者) の役割: これはファクトリ メソッド パターンの中核であり、アプリケーションとは何の関係もありません。パターンで作成されたオブジェクトのファクトリ クラスはすべて、このインターフェイスを実装する必要があります。
2.2 Concrete Creator (Concrete Creator) ロール: これは、抽象ファクトリ インターフェイスを実装する具象ファクトリ クラスであり、アプリケーションに密接に関連するロジックが含まれており、製品オブジェクトを作成するためにアプリケーションによって呼び出されます。上の図には、BulbCreator と TubeCreator という 2 つの役割があります。
2.3 抽象プロダクト (Product) ロール: ファクトリ メソッド パターンによって作成されるオブジェクトのスーパー タイプ。これは、プロダクト オブジェクトの共通の親クラスまたは共通に所有されるインターフェイスです。上の写真では、このキャラクターはライトです。
2.4 具体的な製品ロール: このロールは、抽象的な製品ロールによって定義されたインターフェイスを実装します。特定の製品は特定の工場で作られ、それらの間には 1 対 1 の対応関係があることがよくあります。

PHPソースコード設計

<?php  
/** 
 * 工厂方法。由于简单工厂违背了开发-封闭原则 
 * 工厂方法。将这个改变放到了客户端 
 * copyright (c) http://blog.csdn.net/CleverCode     
 */  
  
// 运算抽象类    
class Operation  
{  /*{{{*/  
  
    // 数字A    
    protected $_numberA = null;    
  
    // 数字B    
    protected $_numberB = null;    
  
    /**  
     * 设置成员A  
     *  
     * @param double $num 数字  
     * @return void  
     */    
    public function setNumberA($num){    
        $this->_numberA = $num;    
    }    
  
    /**  
     * 获取成员A  
     *  
     * @return double 数字  
     */    
    public function getNumberA(){    
        return $this->_numberA;    
    }    
  
    /**  
     * 设置成员B  
     *  
     * @param double $num 数字  
     * @return void  
     */    
    public function setNumberB($num){    
        $this->_numberB = $num;    
    }    
  
    /**  
     * 获取成员B  
     *  
     * @return double 数字  
     */    
    public function getNumberB(){    
        return $this->_numberA;    
    }    
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return null;    
    }    
}  /*}}}*/  
  
// 加法类    
class OperationAdd extends Operation  
{  /*{{{*/  
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return $this->_numberA + $this->_numberB;    
    }    
}  /*}}}*/  
  
// 减法类    
class OperationSub extends Operation  
{  /*{{{*/  
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return $this->_numberA - $this->_numberB;    
    }    
}  /*}}}*/  
  
//运算工厂  
interface IFactory  
{/*{{{*/  
    public function createOperate();  
}/*}}}*/  
  
//加法工厂  
class AddFactory implements IFactory  
{/*{{{*/  
  
    public function createOperate()  
    {  
        return new  OperationAdd();   
    }  
}/*}}}*/  
  
//减法工厂  
class SubFactory implements IFactory   
{/*{{{*/  
    public function createOperate()  
    {  
        return new OperationSub();   
    }  
}/*}}}*/  
  
class Client   
{/*{{{*/  
    public static function main($argv)  
    {  
       //简单工厂的switch case 放到了客户端了  
       $factory = new AddFactory();  
       $add = $factory->createOperate();  
       // 设置数字A    
       $add->setNumberA(5);    
            
       // 设置数字B    
       $add->setNumberB(2);    
            
       // 运算    
       echo $add->getResult()."\r\n";     
           
    }  
}/*}}}*/  
  
Client::main($argv);  
  
?>

以上がPower Academy デザイン パターン PHP ビデオ チュートリアルの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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