• 关于面向对象的一些想法


    这两天在写程序,一直在想模块之间的信息交流到底用什么方式,GUI中接收到的数据如何才能和逻辑层中的业务进行交流,一开始我使用的是字符串,感觉这种方式很不好,于是开始考虑使用对象来传递消息。

    使用字符串是一开始编程的时候很容易想到的,很直观简单,可是使用的时候就不是这个样子了,使用字符串的话,模块之间的耦合会加大,不利于软件的更改。比如说我现在遇到的情况。一开始用户只需要选择要比较的图层和要比较的属性项,可是现在要增加一个容限值(tolerance)参数,我的修改就很麻烦了。

                //GUI中的对象,_selectedFeatrClsesList,_slctedFieldsList是用户选中的信息
    Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); bool isRunOk = _bussinessProcess.Run(_selectedFeatrClsesList, _slctedFieldsList);//执行逻辑比较操作 sw.Stop();

      

     1 public bool Run(IList<string> slctedFeatr, IList<string> cmprFlds)
     2         {
     3             AttributeCompare attrCompr = new AttributeCompare(_mxDoc, slctedFeatr, cmprFlds);
     4             string saveFilePath = ShowSaveDialog();
     5 
     6             if (saveFilePath == string.Empty)
     7             {
     8                 return false;
     9             }
    10             else
    11             {
    12                 attrCompr.ExcuteCompare(saveFilePath);
    13 
    14                 return true;
    15             }
    16         }

    如果要添加参数的话,就需要再修改run函数的参数,很不方便,如果写一个args类,就只需要在界面层中增加tolerance参数即可。而对其他的类没有影响。

  • 相关阅读:
    MERGE引擎 分表后 快速查询所有数据
    MYSQL导入中文数据乱码的四种解决办法
    数据库中为什么不推荐使用外键约束?
    Word转PDF
    YII2 更新数据不成功
    YII2 使用curl请求,返回false
    Yii集成PHPWord
    网站安全DDOS攻击及监测
    nginx日志
    定时任务秒级执行
  • 原文地址:https://www.cnblogs.com/353373440qq/p/3530509.html
Copyright © 2020-2023  润新知