您的位置:首页 > 其它

设计模式之间可以相互"功能替换"吗?

2008-04-25 10:28 197 查看
有朋友看了我这篇文章后说模式并不存在相互转换,因为它们有不同的应用背景,我认为用转换的确不妥,那就改用功能替换吧,就是说一个功能的实现并不局限于一种模式.

在上一篇实际项目中的策略模式应用中,我分析了一下实际项目中如何应用策略模式,我们知道设计模式有二十多种,是不是在一个实现方法上只能唯一使用一种模式呢?它们之间是否有共同点,或者说它们之间是不是可以转换呢?

在这篇文章中我还是继续上一篇的项目来说一下策略模式有没有可能和工厂模式相互转换,知道设计模式的朋友一定知道,工厂模式在设计模式当中的应用应该来说是最多的,因为它是很多模式的基础.

策略模式的类图如下:

public interface IExporter

public class FactoryDAL

[/b]
根据不同的导出类型实现的具体类如下:


public class ExcelExporter:IExporter

public class PdfExporter : IExporter

public  class WordExporter:IExporter

<asp:DropDownList ID="DropDownList1" runat="server">

<asp:ListItem Selected="True" Value="pdf">pdf导出</asp:ListItem>

<asp:ListItem Value="word">word导出</asp:ListItem>

<asp:ListItem Value="excel">excel导出</asp:ListItem>

</asp:DropDownList>

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出" />


cs:

protected void Button1_Click(object sender, EventArgs e)

{

IExporter EX = FactoryDAL.createInstance(this.DropDownList1.SelectedValue.ToString().Trim());

Response.Write(EX.ExportTypeName);

}




我只是想说明下工厂模式和其它模式的关系,也并不是说此种转换一定实用于实际项目,这还是要实际情况实际分析,不同的模式有不同的好处,只要能够解决问题就是好方法,古人云:条条大道通罗马.在模式的应用中我们一般是主张利用组合,少用继承,可以将多种模式结合起来用,这样可以扬长补短.


注:本文参考了下面文章:http://baike.baidu.com/view/1227908.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐