zoukankan      html  css  js  c++  java
  • 类与类之间的隔离不要与陌生人说话。

    根据我的理解,要降低类之间的耦合,那么应该尽量让他们之间不要直接打交道。
    或者正确的说,两个分工很明确的类,应该各自管理自己的东西,而不要去“打听”其他类的东西。
    举个例子:
    需求是这样的:
    当一个类更新了数据后,需要发送邮件通知相关人员。
    代码一:

    public DataAccess()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }

            
    public void UpdateData(Data data)
            
    {
                
    //
                //直接初始化myMail类,并调用发邮件方法。
                
    //完成数据更新后,利用mail通知

                new myMail().SendMail(mail);
            }

        }

        
    public class myMail
        
    {
            
    public myMail()
            
    {
            }

            
    public void SendMail(MailArgs ex)
            
    {

            }

        }

    代码二
    专门定义一个事件类,来接受来之于数据处理类的触发事件,并在事件类里面来发送邮件。
    那么作为数据更新类,只负责做好数据更新。
    交由一个中间类来处理它的事件。

        public class DataAccess        
        
    {
            
    protected eventClass e;
            
    public DataAccess()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
                e = new eventClass(this);
                
            }

            
    public void UpdateData(Data data)
            
    {
                
    //

                
    //利用事件通知
                if(updateEvent!=null)
                    updateEvent(
    this);
            }

            
    定义事件
        }


        
    public class eventClass
        
    {
            
    public eventClass(DataAccess a)
            
    {
                a.updateEvent 
    +=new Fiberxon.HR.Biz.DataAccess.UpdateEventHandler(a_updateEvent);
            }


            
    private void a_updateEvent(object sender)
            
    {
                
    new myMail().SendMail(ex);
            }

        }



        
    public class myMail
        
    {
            
    public myMail()
            
    {
            }

            
    public void SendMail(MailArgs ex)
            
    {

            }

        }

    }




     

  • 相关阅读:
    【OpenCV学习】安防监控可疑走动报警
    【OpenCV学习】OpenMP并行化实例
    【OpenCV学习】cvConvert的使用
    【OpenCV学习】Fuzzy Logic模糊逻辑边缘提取
    C# 委托系列(一)将方法作为方法的参数
    关于dev的Gridview控件的行数据的颜色控制,根据不同的值设置不同颜色
    将gridcontrol导出到excel
    DataGridView中将某行设置为当前可见区域第一行
    如何获得窗体上控件相对于屏幕的位置?
    dev 控件 lookupedit 设置选项值
  • 原文地址:https://www.cnblogs.com/king_astar/p/44752.html
Copyright © 2011-2022 走看看