为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

觉得第一段代码示例,可以使用设计模式的简单工厂来实现。


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

Xls类:



Xlsx类:



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

 

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


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


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


Xlsx相同的修改:


在Switch程序块中,我们就可以改为:


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


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

 



下面内容于2014-12-18 15:01分添加:

简单工厂有一个问题,就是当有新类别添加或是减少时,我们都得去修改FileFactory类。解决这个问题可以使用反射Reflection来处理。

 
下面内容于2014-12-19 14:03分添加:

上面#34行代码,还可以重构为:

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消