2016-02-29 65 views
0

對於軟件設計課程,我們需要設計和實現一個經過多次迭代的Bug跟蹤系統。軟件設計:通過軟件包從用戶隱藏系統

我們被教導使用控制器層從前端(UI)斷開後端(缺陷跟蹤系統)。我們明白,如果有人使用我們的(後端)軟件併爲其創建UI,則他應該只能通過控制器層訪問系統。換句話說,軟件中的類應該是不可見的。

目前我們正在通過將包中的類分組並使用默認/包訪問修飾符來強制執行此操作。

我想知道這是否是要走的路或者是否有文檔化的設計模式來實現前端和後端的封裝?有沒有教科書的例子呢?

+0

您的UI如何與您的控制器進行通信?這是一個Web應用程序嗎? – jaco0646

回答

1

這個任務是試圖讓你覺得在API的條款。這些是您啓用系統用戶進行交互以運行應用程序業務邏輯的端點。

在這種情況下,您可能會有「寫新票」,「爲開發者分配票據」,「解決票證」等情況。 您的控制器會通過此API提供這些操作的合約。

這允許您爲同一個應用程序構建不同的接口,即Web應用程序,Android應用程序,IOS應用程序,您可以將其命名。

很多時候,模型 - 視圖 - 控制器模式認爲視圖層也在您的模型和控制器所在的同一個應用程序中。我認爲,在你的情況下,你會看到更多的Service Oriented Architecture (SOA)

+0

確實如此,UI(視圖)不一定與模型/控制器在同一應用程序中。您建議的架構看起來很有趣(雖然很廣泛),但我沒有看到如何強制約束,即用戶只能使用控制器與模型進行通信。也就是說,我如何避免用戶能夠直接操縱模型,避免控制器? – Auberon

+0

控制器應該是您必須訪問下面的業務邏輯的唯一方法。您不應該提供任何其他機制從UI訪問您的業務邏輯。這完全是爲了讓你的建築圖層保持乾淨,明顯而不是侵入對方。您可能想閱讀「洋蔥建築」。 – hasumedic