激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用詳解

PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用詳解

2021-09-23 16:10luyaran PHP教程

這篇文章主要介紹了PHP設(shè)計(jì)模式之外觀模式(Facade),結(jié)合實(shí)例形式詳細(xì)分析了PHP外觀模式的具體原來(lái)、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用。分享給大家供大家參考,具體如下:

這個(gè)外觀模式,就是通過在必需的邏輯和方法的集合前創(chuàng)建簡(jiǎn)單的外觀接口,并且還會(huì)隱藏了調(diào)用對(duì)象的復(fù)雜性,它和建造者模式非常相似,建造者模式一般是簡(jiǎn)化對(duì)象的調(diào)用的復(fù)雜性,但是外觀模式一般是簡(jiǎn)化含有很多邏輯步驟和方法調(diào)用的復(fù)雜性。

來(lái)看下實(shí)例,先來(lái)描述下:

  • 設(shè)計(jì)一個(gè)User類,里面有g(shù)etUser獲取用戶信息接口
  • 在使用getUser這個(gè)接口的時(shí)候,需要設(shè)置用戶的用戶名和用戶年齡
  • 所以在正常情況下,調(diào)用getUser接口,需要先實(shí)例化User類,然后設(shè)置用戶信息,最后才調(diào)用getUser方法,這個(gè)過程是復(fù)雜的,如果用戶信息非常多的話,或者不斷變化的話,調(diào)用用戶信息類將是維護(hù)成本很大的事情,比如,隨著業(yè)務(wù)擴(kuò)展又添加了用戶手機(jī),住址,體重,婚否等信息。
  • 設(shè)計(jì)了一個(gè)UserFacade,里面有一個(gè)靜態(tài)方法getUserCall,這個(gè)方法可以直接調(diào)用getUser函數(shù)。

來(lái)看下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
//外觀模式,通過在必須的邏輯和方法的集合前創(chuàng)建簡(jiǎn)單的外觀接口,外觀設(shè)計(jì)模式隱藏了來(lái)自調(diào)用對(duì)象的復(fù)雜性
class User {
 protected $userName;
 protected $userAge;
 public function setUserName($userName) {
 return $this->userName = $userName;
 }
 public function setUserAge($userAge) {
 return $this->userAge = $userAge;
 }
 public function getUser() {
 echo '用戶姓名:' . $this->userName . '; 用戶年齡:' . $this->userAge;
 }
}
//創(chuàng)建一個(gè)User 類調(diào)用接口,簡(jiǎn)化獲取用戶getUser方法的調(diào)用
class UserFacade {
 public static function getUserCall($userInfo) {
 $User = new User;
 $User->setUserName($userInfo['username']);
 $User->setUserAge($userInfo['userAge']);
 return $User->getUser();
 }
}
$userInfo = array('username' => 'initphp', 'userAge' => 12);
UserFacade::getUserCall($userInfo); //只要一個(gè)函數(shù)就能將調(diào)用類簡(jiǎn)化

上述實(shí)例是網(wǎng)上一個(gè)比較經(jīng)典的案例,很容易理解。

這個(gè)外觀模式的有點(diǎn)如下:

   (1)對(duì)于調(diào)用者來(lái)說(shuō),訪問代碼變得簡(jiǎn)潔、非常方便

   (2)由于只在一個(gè)地方調(diào)用子系統(tǒng),減少了出錯(cuò)的可能

   (3)Facade類還能使調(diào)用者避免不正確地使用內(nèi)部方法,從而減少錯(cuò)誤的發(fā)生

來(lái)看下結(jié)構(gòu)圖:

PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用詳解

還有兩張圖,大家一起看下吧:

PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用詳解

PHP設(shè)計(jì)模式之外觀模式(Facade)入門與應(yīng)用詳解

最后咱們參考一個(gè)網(wǎng)上的例子,設(shè)計(jì)一個(gè)商場(chǎng)統(tǒng)一購(gòu)買家電和家具的場(chǎng)景,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//家電-冰箱
class BingXiang
{/*{{{*/
  public function buy()
  {
    echo "買冰箱\r\n";
  }
}/*}}}*/
//家電-洗衣機(jī)
class XiYiJi
{/*{{{*/
  public function buy()
  {
    echo "買洗衣機(jī)\r\n";
  }
}/*}}}*/
//家具-創(chuàng)
class Chuang
{/*{{{*/
  public function buy()
  {
    echo "買床\r\n";
  }
}/*}}}*/
//家具-衣柜
class YiGui
{/*{{{*/
  public function buy()
  {
    echo "買衣柜\r\n";
  }
}/*}}}*/
//商場(chǎng)(Facade)
class ShangChang
{/*{{{*/
  public $bingXiang;
  public $xiYiJi;
  public $chuang;
  public $yiGui;
  public function __construct()
  {
    $this->bingXiang = new BingXiang();
    $this->xiYiJi = new XiYiJi();
    $this->chuang = new Chuang();
    $this->yiGui = new YiGui();
  }
  //家電
  public function buyJiaDian()
  {/*{{{*/
    $this->bingXiang->buy();
    $this->xiYiJi->buy();
  }/*}}}*/
  //家具
  public function buyJiaJu()
  {/*{{{*/
    $this->chuang->buy();
    $this->yiGui->buy();
  }/*}}}*/
}/*}}}*/
class Client
{/*{{{*/
  public static function main($argv)
  {
    $shangChang = new ShangChang();
    //買家電
    $shangChang->buyJiaDian();
    //買家具
    $shangChang->buyJiaJu();
  }
}/*}}}*/
Client::main($argv);
?>

輸出結(jié)果大家可以自己手動(dòng)試下。

好啦,本次記錄就到這里了。

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

原文鏈接:https://blog.csdn.net/luyaran/article/details/82881581

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久久久亚洲精品 | 羞羞视频免费入口网站 | 嗯~啊~用力~高h | 91免费在线播放 | caoporn国产一区二区 | 亚洲精品成人久久 | 狠狠色成色综合网 | 成人资源在线观看 | av在线播放亚洲 | 色蜜桃av | 福利在线免费 | 国产一级在线观看视频 | 国产chinesehd精品91 | 九九热在线视频观看 | 国产精品久久久久久婷婷天堂 | 91精品国产91久久久 | 97超视频在线观看 | 国产一级91 | 欧美日韩一区,二区,三区,久久精品 | 国产精品成人免费一区久久羞羞 | 99sesese | 国产亚洲精品综合一区 | 高清一区二区在线观看 | 黄网站进入 | 精品一区二区久久久久 | 在线观看视频日本 | 精品成人在线 | 久久久日韩精品一区二区 | 黄片毛片一级 | 看免费av | 激情久久婷婷 | 蜜桃一本色道久久综合亚洲精品冫 | 国产做爰全免费的视频黑人 | 国产午夜电影在线观看 | 免费国产成人高清在线看软件 | hdjapanesemassagehd日本 | 久久久久久久免费看 | 国产手机在线视频 | 国产精品片一区二区三区 | 国产成人小视频在线观看 | 国产99久久久久久免费看农村 |