「Power Academy デザイン パターン PHP ビデオ チュートリアル」では、まずデザイン パターンを紹介し、デザイン パターンの用途と重要性を伝え、デザイン パターンが適用される場面について詳しく説明します。次に、コード例を通していくつかの設計パターンを紹介します。最後に、包括的かつ詳細なケース分析では、デザイン パターンを使用して新しいアプリケーションを計画する方法、これらのパターンを 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 サイトの他の関連記事を参照してください。