1

我有一个页面,用户将在其中查看基于产品 ID 的产品详细信息。管理员也可以看到相同的页面。我有一个模板来呈现 html。

管理员将对该页面拥有更多控制权,例如,他可以编辑、删除等等。用户可以看到它并购买。

案例1:通过添加条件使用相同的模板,根据用户显示内容
优点
1)当我们需要修改模板或主题时,它很容易。
2) 可重用性

缺点
1)当有许多条件并且需要大量时间来调试任何问题时,它会变得复杂。
2) 该模板中的任何错误都会影响管理页面和用户页面。

案例2:使用不同的模板
优点
1)当有许多复杂的条件时它很容易。
2)它使代码独立。管理模板中的错误不会影响用户模板

缺点
1)当我们必须修改模板或主题时,这是一个问题。(额外的依赖)

哪个是更好的选择?什么是正确的策略?

应该根据复杂性自适应吗?我想看看你对此的看法。

4

3 回答 3

2

我将创建一个包含用户和管理员之间重叠的共享库。然后,使用装饰器模式添加管理功能。

通过装饰底座,您可以避免管理部分中的错误影响用户。因此,您在添加功能的同时保留了可重用性。

于 2012-05-28T06:35:47.720 回答
1

为什么不使用工厂或抽象工厂模式来解决这类问题......因为这两种模式处理对象系列......并降低复杂性并使您的代码易于维护......

示例:抽象工厂

于 2012-05-28T06:30:40.127 回答
0

You should have your design like this:
1. Suppose your product page has 2 buttons
2. Purchase button - For common user
3. Ship item button - For admin
4. Now showing this button should not be dependent on whether user is admin or not, but on whether u want to show that component that page

you should have PageModel class which has 2 boolean attributes

boolean showPurchaseButton
boolean showShipButton

you should have only one template/page creation code. In template class, u should add components to page like this:

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

while creating page, you can populate PageModel depending on user like this:

//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.

This way u'll have flexibilty to add as many components to ur template. and also debugging will become easy because , when populating values in page model, u'll get idea that what components u r showing for which user. this section of code will act as ur control panel.

于 2012-05-28T08:06:43.793 回答