PHP オブジェクト指向学習ノート 2: オブジェクト設計パターンの生成_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:15:52
オリジナル
742 人が閲覧しました

1. シングルトン パターン (シングルトン)
アプリケーションに一度に 1 つのオブジェクトのみが含まれる場合、このオブジェクトはグローバル変数を置き換えるために使用されます

コードをコピーします。は次のとおりです:
require_once("DB.php");
class DatabaseConnection{
public static function get()< ;/SPAN>< ;/STRONG>{
static $db = null;
$db = new DatabaseConnection();
private $_handle
; プライベート関数 __construct() {
$dsn = 'mysql://root:password@localhost/photos' ;
$this->_handle =& DB::Connect( $dsn, array() );
パブリック関数 handle()
{
return $this->_handle
}
print( "ハンドル = ".DatabaseConnection ::get()->handle()."n" );
print( "Handle = ".DatabaseConnection::get()->handle()."n" );
? >




2. ファクトリ メソッド パターンによって解決される問題:


1> オブジェクト タイプはコードの実行時にのみ認識されます。新しい製品タイプ; 各製品タイプ 特定の関数は、生成される製品クラスから作成者クラスを分離できます。デフォルトがない場合、作成者は製品オブジェクトを生成するためのクラス メソッドを定義します。実装が提供されると、それは作成されます。 クリエーター クラスのサブクラスは、インスタンス化を実行するために使用されます。一般に、ファクトリ パターンの利点は、オブジェクトの作成にあります。 そのタスクは、オブジェクト作成プロセスをカプセル化し、必要な新しいクラスを返すことです。オブジェクトの構造とオブジェクトの作成方法を変更したい場合は、オブジェクト ファクトリを選択するだけで済み、コードを 1 回変更するだけで済みます。 (ファクトリ パターンの機能は非常に強力で、アプリケーションの下部にあるため、今後も他の多くの複雑なパターンやアプリケーションで使用されます。) さまざまな処理オブジェクトは内部で自動的にオフロードされますが、ユーザーにとっては A のみです。インターフェイス メソッドを使用してファクトリ パターンを実践する簡単で便利な例:

コードをコピーします
コードは次のとおりです:

interface Hello{ function Say_hello()} class Englishimplements Hello{ public function Say_hello(){ echo "Hello!";
}
}
class 中国語実装 Hello{
public functionsay_hello(){
echo "Hello";
public static function Factory ($type) {
if($type == 1) $temp = new English();
else if($type == 2) $temp = new Chinese();
else{
die("サポートされていません! ");
}
return $temp;
}
}
$test = Speak::factory(1);
$test->say_hello();


<詳細な設計パターン>では、このファクトリは、新しい製品がある場合、それに応じて変更し、対応するビジネス ロジックまたは判断を追加する必要があるため、このファクトリ モードはシンプル ファクトリ モードと呼ばれます。静的メソッドはファクトリ生産関数を実装します。(単純ではありません) ファクトリ メソッド パターン: ファクトリ メソッドは抽象クラスまたはインターフェイスであり、特定のファクトリはこのメソッド (インターフェイス) を実装し、ユーザーがそれを呼び出して特定の製品オブジェクトを作成できるようにします (各製品には対応する特定のファクトリ) は次のキーです。 こんにちは



コードをコピーします。 コードは次のとおりです。 1
class EnglishSpeaker は Speaker{
public function assignSpeaker(){
return new English();
}
}
//コンクリートファクトリー 2
class ChineseSpeaker は Speaker{
public function assignSpeaker(){
return new Chinese() ; } } //抽象プロダクト インターフェース Hello{
function Say_hello();
}
クラス 英語実装 Hello{
public function Say_hello(){
echo "Hello!";
}
//特定の製品 2
class Chinese 実装 Hello{
public functionsay_hello(){
echo "Hello";
}
}


使用法:



コードをコピー

コードは次のとおりです。


if(!empty($_GET['t' ])){
switch($_GET['t']){
ケース 1: $temp=new EnglishSpeaker();
break; temp=new ChineseSpeaker();
break;
$ man=$temp->assignSpeaker();


3. 抽象的な工場モデルの製品ファミリー。各エンティティ工場は製品ファミリー (1、2...) の製品を担当し、各製品ファミリーはいくつかの異なるカテゴリ (A、B...) に分類されます。あるエンティティ ファクトリを見ると、実際はファクトリ メソッド パターンです
PHP オブジェクト指向学習ノート 2: オブジェクト設計パターンの生成_PHP チュートリアル
上記の hello の例にさらに多くの式、通常の式と歌う式 (2 製品ファミリー) がある場合
コードをコピーします コードは次のとおりです。

//抽象ファクトリー
抽象クラス Speaker{
const NORMAL =1;
const SING =2;
抽象関数 assignSpeaker($flag_int)
}
//具体的なファクトリー 1
クラス EnglishSpeaker extends Speaker {
public function assignSpeaker($flag_int){
switch($flag_int){
case self::NORMAL:
return new NormalEnglish();
case self::SING:
break; }
}
//特定のファクトリー 2
class ChineseSpeaker extends Speaker{
public function assignSpeaker($flag_int){
switch($flag_int){
case self::NORMAL:
return new Normal Chinese() ; self::SING:
return new Sing Chinese();
break;
}
}
//抽象積
インターフェース Hello{
function Say_hello();
//具体的な積 A1
class NormalEnglish 実装
public functionsay_hello(){
echo "Hello!";
}
}
//特定の製品 B1
class Normal Chinese は Hello{
public function Say_hello(){
echo "Hello!";
}
}
/ /特定の製品 A2
class SingEnglish は Hello{
public functionsay_hello(){
echo "ああ、ジングルベル、ジングルベル、ハロー! ハロー! ハロー!"
}
}
//特定の製品 B2
クラス Sing Chinese は実装します。 Hello{
public functionsay_hello(){
echo "Ding Ding Dong, Ding Ding Dong, Hello! Hello! Hello!";
}
}


使用:



コードをコピー

コードは次のとおりです:


//プログラムのビジネスロジックに従って特定のファクトリーを決定します
switch($_GET[' language']){ case 1: $temp=new EnglishSpeaker() break; temp= new ChineseSpeaker(); break; }
//プログラムのビジネスロジックに従って特定の製品を決定し、特定のファクトリーを気にする必要がなく、保守性が向上します
$man=$temp ->assignSpeaker( $_GET['style' ]);
//製品を使用するとき、それがどの製品であるかを気にする必要はありません



4プロトタイプ (プロトタイプ)

クローンを使用して既存の特定の製品をコピーし、それを指定します。製品カテゴリ自体が独自の生成の基礎になります。



http://www.bkjia.com/PHPjc/326063.html
www.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/326063.html技術記事

1. シングルトン モード (シングルトン) アプリケーションに一度に 1 つのオブジェクトのみが含まれる場合、このオブジェクトはグローバル変数を置き換えるために使用されます。 ?php r...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!