建造者模式
<?php
//乙個導演類,傳入乙個 不同builder類(具體怎麼製造由此決定),來建立一輛車
// 定義build介面
//不同車輛build類,根據不同來建造
//和工廠差不多,要稍複雜一點
class director
}class engineer
class whell
class door
inte***ce builder
class carbuild implements builder
public function setdoor()
public function setwhell()
public function setenginer()
public function getvehicle()
}abstract class vehicle
abstract public function startrun();
}class car extends vehicle
}class bikebuilder implements builder
public function setdoor()
public function setwhell()
public function setenginer()
public function getvehicle()
}class bike extends vehicle
}$carbuild=new carbuild();
$car=(new director())->build($carbuild);
$car->startrun();
echo "------------------------
";$bikebuild=new bikebuilder();
$bike=(new director())->build($bikebuild);
$bike->startrun();
共享資料池
<?php
class workerpool implements countable
else
$this->occupiedworks[spl_object_hash($worker)]=$worker;
return $worker;
} public function dispose($worker)
$this->freeworks[$key]=$worker;
} public function count()
}class stringreverseworker
public function run(string $text)
}$workerpool=new workerpool();
$work1=$workerpool->get();
// $work2=$workerpool->get();
$workerpool->dispose($work1);
$work2=$workerpool->get();
var_dump($work1==$work2);
$count=$workerpool->count();
var_dump($count);
原型模式
<?php
class student
public function getscore()
} $stu=new student("jianhanke");
$stu->getscore();
$stu2=clone $stu;
$stu2->getscore();
單例模式
<?php
class person
private function __construct(){}
public static function getinstance()
return self::$instance;
}}
簡單工廠模式
<?php
abstract class operation
class operationadd extends operation
}class operationsub extends operation
}class factory
}}
抽象類
abstract class animal
abstract public function eat(); //抽象方法,不能包含方法體(出現{}就會出錯)
}class dog extends animal
}$dog=new dog();
$dog->shout(); //兩個方法都會有
$dog->eat();
介面
inte***ce person
class student implements person
}$stu=new student();
$stu->getsocre();
php 物件導向及設計模式
物件 歸納,總結 抽象成為類 類 具體化實現 例項化成為物件 屬性中的變數可以初始化,但是初始化的值必須是常數,這裡的常數是指php指令碼在編譯階段就可以得到其值,而不依賴於執行的資訊才能求值。如可用常數5,而不能用7 2獲得。封裝盡可能隱蔽物件的內部細節,對外形成乙個邊界,只保留有限的對外介面,使...
PHP物件導向設計模式和設計原則
一 設計模式 1.單例模式 目的 讓乙個類只能生成乙個物件 步驟 將建構函式變成私有的 在類裡面做乙個靜態成員函式造物件 在方法裡加限制條件 單例模式 class ren public static function duixiang return self r 返回 r中的唯一的例項化物件 r r...
Python常用設計模式 物件導向設計原則
乙個軟體實體如類 模組和函式應該對擴充套件開放,對修改關閉。即軟體實體應該在不修改原 的情況下進行修改。所有引用父類的地方必須能透明地使用其子類地方必須能透明地使用其子類的物件,乙個簡單的例子加強理解 class user object defprint name self pass class v...