<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                你可能有很多關于 contracts 的問題。如為什么要使用接口?使用接口會不會變的更復雜? 讓我們用下面的標題來解釋為什么要使用接口:低耦合和簡單性。 低耦合 首先,看一些強耦合的緩存實現代碼。如下: ~~~ <?php namespace App\Orders; class Repository { /** * The cache. */ protected $cache; /** * Create a new repository instance. * * @param \SomePackage\Cache\Memcached $cache * @return void */ public function __construct(\SomePackage\Cache\Memcached $cache) { $this->cache = $cache; } /** * Retrieve an Order by ID. * * @param int $id * @return Order */ public function find($id) { if ($this->cache->has($id)) { // } } } ~~~ 在上面的類里,代碼跟緩存實現之間是強耦合。理由是它會依賴于擴展包庫( package vendor )的特定緩存類。一旦這個擴展包的 API 更改了,我們的代碼也要跟著改變。 同樣的,如果想要將底層的緩存技術(比如 Memcached )抽換成另一種(像 Redis ),又一次的我們必須修改這個 repository 類。我們的 repository 不應該知道這么多關于誰提供了數據,或是如何提供等等細節。 比起上面的做法,我們可以改用一個簡單、和擴展包無關的接口來改進代碼: ~~~ <?php namespace App\Orders; use Illuminate\Contracts\Cache\Repository as Cache; class Repository { /** * Create a new repository instance. * * @param Cache $cache * @return void */ public function __construct(Cache $cache) { $this->cache = $cache; } } ~~~ 現在上面的代碼沒有跟任何擴展包耦合,甚至是 Laravel。既然 contracts 擴展包沒有包含實現和任何依賴,你可以很簡單的對任何 contract 進行實現,你可以很簡單的寫一個替換的實現,甚至是替換 contracts,讓你可以替換緩存實現而不用修改任何用到緩存的代碼。 簡單性 當所有的 Laravel 服務都簡潔的使用簡單的接口定義,就能夠很簡單的決定一個服務需要提供的功能。** 可以將 contracts 視為說明框架特色的簡潔文檔。 除此之外,當你依賴簡潔的接口,你的代碼能夠很簡單的被了解和維護。比起搜索一個大型復雜的類里有哪些可用的方法,你有一個簡單,干凈的接口可以參考。
                  <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>

                              哎呀哎呀视频在线观看