ff415501264 2013-03-18 11:15 采纳率: 0%
浏览 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 github录制项目
  • ¥15 H.264选择性加密例程
  • ¥50 windows的SFTP服务器如何能批量同步用户信息?
  • ¥15 centos7.9升级python3.0的问题
  • ¥15 如何解决调试dev-出++5.11不成功问题
  • ¥15 安装CentOS6时卡住
  • ¥20 关于#监控系统#的问题,如何解决?(相关搜索:系统软件)
  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。