欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于面向对象的一些想法

程序员文章站 2022-03-13 10:06:18
...

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