关于面向对象的一些想法

这两天在写程序,一直在想模块之间的信息交流到底用什么方式,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参数即可。而对其他的类没有影响。

原文地址:https://www.cnblogs.com/353373440qq/p/3530509.html