码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式--简单工厂(Factory)模式

时间:2014-12-18 11:47:47      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   os   使用   sp   for   文件   2014   

温故而知新,看了以前写的博文《Asp.net读取Excel文件 2http://www.cnblogs.com/insus/archive/2011/05/05/2037808.html 觉得第一段代码示例,可以使用设计模式的简单工厂来实现。
bubuko.com,布布扣

也就是说,使用两个全新的类,替代两个Switch分支。

Xls类:
bubuko.com,布布扣


Xlsx类:
bubuko.com,布布扣


经这样分离之后,Switch代码,就可以写成下面这样子:
bubuko.com,布布扣

 

上面的高亮的方法是相同的,两个类的方法相同,我们可以抽取至父类作为父类的public的方法,但是Insus.NET在开发时ASP.NET时,很少使用继承,因为xxx.aspx.cs已经继承了System.Web.UI.Page,如果再创建一个父类来继承,是无法解的问题,因为一个类只能继承一个父类。


因此,我们可以采用写成接口或是抽象象类。类能继承多个接口或是抽象类。
bubuko.com,布布扣


抽象类写好了,因此两个类Xls和Xlsx需要稍修改一下,实现上面的抽象类FileFormat:
bubuko.com,布布扣

Xlsx相同的修改:
bubuko.com,布布扣


在Switch程序块中,我们就可以改为:
bubuko.com,布布扣


上面高亮的代码,就是我们平时所说的多态。修改到这里,我们还是让前端写的代码太多,是不是可以写一类,专处理用户传入的Excel类型,就能直接呼叫对应的类呢?这里Insus.NET就是想说,可以写一个简单工厂来。直接把Switch程序搬至工厂类去。xxx.aspx.cs直接呼叫即可,也算得上去封装吧:
bubuko.com,布布扣


最终本篇最开头的代码示例,就可以使用这个简单工厂去替代Switch方法块:
bubuko.com,布布扣
 

设计模式--简单工厂(Factory)模式

标签:blog   http   ar   os   使用   sp   for   文件   2014   

原文地址:http://www.cnblogs.com/insus/p/4171038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!