Web编程技术交流网

博客文章

欢迎访问本站博客,本站免费提供大量网站编程的技术资料和娱乐信息,欢迎编程交流1群讨论!

设计模式在Magento中的应用–模板方法

设计模式在Magento中的应用–模板方法

模板方法的定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义算法的某些特定的步骤。
模板方法是一个使用得非常之广泛也是非常容易理解的一个设计模式,在Magento中大量使用这个模式,用过java servlet的人都知道,servlet就是一种模板方法的典型应用。我们这里利用Magento中的值model中的save方法来讲解模板方法.
值Model中(Mage_Core_Model_Abstract)的save方法:
代码块1:

public function save()
{
$this->_getResource()->beginTransaction();
try {
$this->_beforeSave();
if ($this->_dataSaveAllowed) {
$this->_getResource()->save($this);
$this->_afterSave();
}
$this->_getResource()->commit();
}
catch (Exception $e){
$this->_getResource()->rollBack();
throw $e;
}
return $this;
}

在这里定义了save方法的执行步骤和只要调用save就必须执行的不可以改变的步骤,如行3,10,13(事务处理). 而子类可以实现方法_beforeSave()和_afterSave()从而在保存数据之前做一些前置处理和后置处理工作,如可以在_beforeSave()之前修改_dataSaveAllowed为false,已说明数据不能进行保存。当然子类也可以不必实现。
资源model的save方法也是使用的模板方法,您可以查看一下:Mage_Cms_Model_Mysql4_Page中的方法,其中就有很多模板方法的实现。
模板方法可以把一个本来很复杂的方法,按一定规律把他分解成很多小的方法,并在主方法中实现一些相同的功能,而把其它功能放到子类中实现(但在主方法中要调用这些方法),从而使功能的实现更加单一,每个方法只要关注自己本身的职责就可以了。



顶一下
(0)
100%

订阅分享回复

踩一下
(0)
100%

如果您觉得此内容对您有价值,可以点击上面的按钮支持作者,谢谢^_^
13,583 次

发表于分类: magento, PHP相关

发表一下您的观点: (0) →

发表评论

+=

无觅相关文章插件,快速提升流量