ff415501264 2013-03-18 11:15 采纳率: 20%
浏览 176
已采纳

java 设计模式(方法、经验)

请问下 :我现在有个类,目前类里的代码已经有700多行了,类里有个检验的方法,这个方法大致都是一些判断验证操作

if(类型1){
类型1的一些判断验证操作
if(1.1){
数据验证操作
}else if(1.2){
数据验证操作
}
} else if(类型2){
类型2的一些判断验证操作
if(2.1){
数据验证操作
}else if(2.2){
数据验证操作
}
}else if(类型3){
类型2的一些判断验证操作
if(3.1){
数据验证操作
}else if(3.2){
数据验证操作
}else .......

就是这样的一些验证判断写了700多行代码。现在,同事说我这个类代码太多,判断逻辑太多,可能会造成以后不易维护。叫我考虑用一种设计模式或者其他方式将这个类重写下,让这个类简洁清晰些,请问各位,我应该怎么做呢。我经验不足,对设计模式不是怎么熟悉,请各位帮忙指点指点,看看有什么其他经验、方法可以借鉴!

  • 写回答

8条回答 默认 最新

  • gds_fighting 2013-03-19 08:58
    关注

    可根据以下步骤,完成重构:
    1、将if-else 抽取出来,构建出一个集成体系,这属于策略模式
    父类为strategy,子类为各种情况下的校验实现
    2、在原方法中if-else分支,面向抽象编程
    使用简单工厂,根据你的类型,从配置文件取出相应实现
    strategy = Factory.getDetailStrategy(type);
    strategy.doCheck();

    用到的设计模式如下:
    1、工厂模式+配置文件
    2、策略模式

    你仔细想想经过以上步骤之后,以后如果新添加一种校验,你是不是很容易的可以实现?
    1、你只需要添加一个strategy的子类,实现新的校验算法。
    2、然后在配置文件中,添加一种新的算法的配置即可。

    总结:
    面向对象编程的终极目的是:代码好维护,易扩展、够灵活。
    而设计模式是将面向对象编程发挥到极致的途径。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题