2012-05-28 85 views
1

我有一個頁面,用戶將根據產品ID查看產品詳細信息。同樣的頁面也可以通過管理員看到。我有一個模板來呈現HTML。在這種情況下哪個更好?重新使用性或冗餘

管理員將在該頁面上擁有更多的控制權,他可以編輯,刪除等等。 用戶可以看到它併購買。

案例1:通過增加條件下使用相同的模板,根據用戶對顯示內容
優點
1)它很容易,當我們需要修改模板或主題什麼。
2)可重用性

當有許多條件

缺點
1)它變得複雜,所花的時間很多調試任何問題。
2)該模板中的任何錯誤都會影響管理頁面和用戶頁面。

案例2:使用不同的模板
優點
1)其時,有很多複雜的條件下容易。
2)它使代碼獨立。管理模板中的錯誤不會影響用戶模板

缺點
1)它是我們必須修改模板或主題時的問題。 (額外依賴)

哪個更好?什麼是正確的策略去?

應該根據複雜性自適應嗎?我希望看到你的意見。

回答

2

我將創建包含用戶和管理員之間的重疊的共享基礎。然後,使用裝飾模式添加管理功能。

通過裝飾基地,您可以避免管理部分中的錯誤影響用戶。因此,您在添加功能的同時保留重用性。

+0

是的,這是我最喜歡的一個選項。 Symfony2 php框架也使用相同的設計模式。 – Venu

1

爲什麼不使用Factory或Abstact Factory模式來處理這類問題......因爲這兩種模式處理對象的家族......並降低複雜性並使代碼易於維護......

實施例:Abstract Factory

+0

我期待着它。感謝您的建議 – Venu

+0

@Venu-k,歡迎............. –

0

你應該有你的設計是這樣的:
1.假設你的產品頁面有2個按鈕
2.購買按鈕 - 對於普通用戶
3.船舶項目按鈕 - 有關管理
4.現在顯示此按鈕不應該依賴於用戶是管理員或不是,但U上是否要顯示組件頁

你應該有PageModel類有2個布爾屬性

boolean showPurchaseButton 
boolean showShipButton 

你應該只有一個模板/頁面創建代碼。 在模板類, ü應該將組件添加到頁面這樣的:

//common user 
PageModel model = new PageModel() 
model.setshowPurchaseButton(true); 
model.setshowShipButton(false); 

//for admin user 
PageModel model = new PageModel() 
model.setshowPurchaseButton(false); 
model.setshowShipButton(true); 

//while creating your template pass this model to it. 

這樣日子會把有:

if(showPurchaseButton){ 
//add purchase button to template 
} 
if(showShipButton){ 
//add ship button to template 
} 

在創建頁面,則可以根據用戶的這樣的填充PageModel可靈活地爲您的模板添加儘可能多的組件。 並且調試也將變得簡單,因爲在頁面模型中填充值時,您會明白哪些組件顯示哪個用戶。這部分代碼將充當您的控制面板。

相關問題