2012-05-28 45 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可灵活地为您的模板添加尽可能多的组件。 并且调试也将变得简单,因为在页面模型中填充值时,您会明白哪些组件显示哪个用户。这部分代码将充当您的控制面板。

相关问题