<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 定義 給某一個對象提供一個代理對象,并由代理對象控制對原對象的引用。 ### 作用 為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 ### 使用場景 房東托中介賣房。 ### 優、缺點 優點: 1、職責清晰。 2、高擴展性。 3、智能化。 缺點: 1、由于在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。 2、實現代理模式需要額外的工作,有些代理模式的實現非常復雜。 ### 模式結構 (略) ### 示例類圖 代理模式包含幾個角色: * Subject:抽象主題接口,定義了RealSubject和Proxy公用接口,這樣就在任何使用RealSubject的地方都可以使用Proxy。 * RealSubject:真正主題類,定義了Proxy所代表的真實實體。 * Proxy:代理對象,保存一個引用使得代理可以訪問實體,并提供一個與RealSubject接口相同的接口,這樣代理可以用來代替實體(RealSubject)。 :-: ![](https://box.kancloud.cn/253ae35d05c0cdd9e6d23b6b94af1ca7_518x258.bmp) ### 示例代碼 * 抽象主題接口 (Subject) ``` /** * 房屋交易接口 */ interface HousingTransactions { public function sell(); } ``` * 真正主題類 (RealSubject) ``` /** * 房東賣房子 */ class Seller implements HousingTransactions { public $name; public function __construct($name) { $this->name = $name; } public function sell() { echo $this->name."賣房子\n"; } } ``` * 代理對象(Proxy) ``` /** * 房產中介 */ class Proxy implements HousingTransactions { private $_subject = null; public function __construct($name) { $this->_subject = new Seller($name); } public function sell() { $this->_subject->sell(); } } ``` * 客戶端調用 ``` class Client { public static function main($argv) { $proxy = new Proxy('張三'); // 找中介幫忙賣房子 $proxy->sell(); $proxy = new Proxy('李四'); $proxy->sell(); } } Client::main($argv); ``` * 運行結果 ``` 張三賣房子 李四賣房子 ``` * * * * * ### 注意事項 1. 和適配器模式的區別:適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口。 2. 和裝飾器模式的區別:裝飾器模式為了增強功能,而代理模式是為了加以控制。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看