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)
            
    {

            }

        }

    }




     

  • 相关阅读:
    FineBI客户画像分析与客户价值模型快速入门
    大数据分析免费学习教程
    Xshell连接不上Ubuntu解决方式
    Jenkins时区设置为北京时间
    ASP.NET Core 与支付宝开发文档
    .NET Core 从 Github到 Nuget 持续集成、部署
    使用 dotnet cli 命令上传 nuget 程序包
    发布你的程序包到Nuget
    ASP.NET Core 判断请求是否为Ajax请求
    ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)
  • 原文地址:https://www.cnblogs.com/king_astar/p/44752.html
Copyright © 2011-2022 走看看