java重构代码

小编前一阵写了这俩业务代码:

1.java20 通过gdal3.6.4,geotools实现遥感影像分类,坐标转换,输出

2. java版本gdal计算影像植被指数NDVI

影像分类是数据下载,数据裁剪,数据分类,tif转shp,输出;

计算植被指数是,数据下载,数据裁剪,计算植被指数,tif转shp,输出;

我发现和分类前面的步骤都是包含数据下载,数据裁剪;

最先开始小编就是代码逻辑是顺序输出,if else 目前虽然不是很多,那如果写计算植被指数也是这样的顺序,就会导致这个代码很长,逻辑都放在了一起,很多重复,修改代码也不清晰,如果出现改动,比如如果先分类,再裁剪,或者先转shp等等,就会很麻烦。

这是我改造后的代码,用了装饰器模式调用的时候,就比较容易 ,而且很方便修改前后调用的顺序。 (抽象装饰器角色被我省略掉了)

/**
 * 应用模块名称: 影像处理抽象类
 * 抽象构件角色
 */
public abstract class AbstractImageHandler {
    public abstract Result handler(ImageInformationDTO infomationDTO) throws Exception;

}

/**
 * 应用模块名称: 具体构建角色
 */
public class ImageHandlerImpl extends AbstractImageHandler {
    public AbstractImageHandler imageHandler;
    private Result result = new Result();

    public ImageHandlerImpl() {
    }

    public ImageHandlerImpl(AbstractImageHandler imageHandler) {
        this.imageHandler = imageHandler;
    }

    @Override
    public Result handler(ImageInformationDTO infomationDTO) throws Exception {
        return result;
    }
}

/**
 * 应用模块名称: 具体装饰角色
 */
public class ImageCutHandler extends ImageHandlerImpl {
    public ImageCutHandler(AbstractImageHandler imageHandler) {
        super(imageHandler);
    }

    public ImageCutHandler() {
    }

    @Override
    public Result handler(ImageInformationDTO infomationDTO) throws Exception {
        Result result = new Result();
        // imageCut(infomationDTO);//影像裁剪的逻辑
        if (this.imageHandler != null) {
            result = this.imageHandler.handler(imageClassInfoDTO);
        }
        return result;
    }
}


于是我借鉴了设计模式中的装饰器模式,调用就变成了以下这样,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值