2017-07-17 38 views
0

我一直在大量閱讀與laravel一起使用存儲庫模式,並且我已經看到了使用存儲庫本身以及其接口完成的DI。存儲庫是否需要一個接口?

我的問題是,存儲庫是否需要一個有效的接口?

class Repository { 
    public function foo() { 
      return "Hi"; 
    } 
} 
class RepositoryController { 
    private $test; 
    public function __contruct(Repository $test) { 
     $this->test = $test; 
    } 

    public function do() { 
     echo $test->foo(); 
    } 

} 

VS:

interface RepositoryInterface { 
    function foo (string $text) 
} 
class Repository implements RepositoryInterface { 
    public function foo ($text) { 
      return $text; 
    } 
} 
class RepositoryController { 
    private $test; 
    public function __contruct(RepositoryInterface $test) { 
     $this->test = $test; 
    } 

    public function do() { 
     echo $test->foo(); 
    } 

} 
+1

「有效」---這究竟意味着什麼? – zerkms

+0

@zerkms我認爲存儲庫模式的重點是通過抽象操作數據而不觸及模型。使用界面可以實現這一點。但我想知道這個的原因。 – Shawn31313

回答

0

簡短的回答:不是,你必須使用一個接口。接口只是確保您在實現接口的每個類中正確使用相同的方法。

例如,如果您使用findOne(id)方法。你知道它會一直收到一個id,你可以指定它的類型以及返回的內容。

在大型應用程序中,它可能非常有用並維護訂單。

如果您不確定,根據我的經驗,最好嘗試幾種不同的方法來查看哪一種適合您的需求。除非你沒有時間,否則應該簡單地使用更常見的東西。

我使用了界面,並且我認爲一旦有新開發人員進入並更好地理解允許所有存儲庫的內容,它就可以很好地工作。

相關問題