首頁  >  文章  >  後端開發  >  php 工廠模式和策略模式區別

php 工廠模式和策略模式區別

(*-*)浩
(*-*)浩原創
2019-06-06 15:12:444335瀏覽

工廠是創建型模式,它的作用就是創建物件;

策略是行為型模式,它的功能是讓一個物件在許多行為中選擇一種行為; 

php 工廠模式和策略模式區別

關注點不一樣

一個專注於物件創建

一個關注行為的封裝(推薦學習: PHP影片教學

解決不同的問題

工廠模式是建立型的設計模式,它接受指令,創造出符合要求的實例;它主要解決的是資源的統一分發,將物件的創建完全獨立出來,讓物件的創建和具體的使用客戶無關。主要應用在多資料庫選擇,類別庫檔案載入等。

策略模式是為了解決的是策略的切換與擴展,更簡潔的說是定義策略族,分別封裝起來,讓他們之間可以相互替換,策略模式讓策略的變化獨立於使用策略的客戶。

工廠相當於黑盒子,策略相當於白盒子;

#實例:

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);
abstract class Product {
abstract public function getName();
}
class ProductA extends Product  {
public function getName() {
echo &#39;这是A商品<br>';
}
}
class ProductB extends Product {
public function getName() {
echo '这是B商品<br>';
}
}
//工厂模式
class ProductFactory {
public static function create($num) {
switch($num) {
case 1:
return new ProductA();
case 2:
return new ProductB();
}
return null;
}
}
//传递不同的参数获取不同的对象
$obj=ProductFactory::create(1);
$obj->getName(); //这是A商品
$obj=ProductFactory::create(2);
$obj->getName(); //这是B商品
 
//=======策略模式
<?php
header('content-type:text/html;charset=utf-8');
interface IStrategy {
function ontheway();
}
class Walk implements IStrategy {
public function ontheway() {
echo '走着去<br>';
}
}
class Bick implements IStrategy {
public function ontheway() {
echo '骑自行车去<br>';
}
}
class Bus implements IStrategy {
public function ontheway() {
echo '坐巴士去<br>';
}
}
//策略模式,传递不同的参数,调用不同的策略
class Strategy{
public function getWay(IStrategy $obj) {
$obj->ontheway();
}
}
$obj=new Strategy();
$obj->getWay(new Walk); //走着去
$obj->getWay(new Bick); //骑自行车去
$obj->getWay(new Bus); //坐巴士去

更多PHP相關技術文章,請造訪PHP圖文教學欄位進行學習!

以上是php 工廠模式和策略模式區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn