zoukankan      html  css  js  c++  java
  • EffectiveC#01--避免返回内部类对象的引用

    此篇是对00中第3点的再一次阐述。

    1.如果一个属性返回一个引用类型,那么调用者就可以访问这个对象的公共成员,也包括修改这些属性的状态。

    public class MyBusinessObject 
    { // Read Only property providing access to a  private data member: 
    private DataSet _ds; 
    public DataSet Data { get { return _ds; } }
    } // Access the dataset: DataSet ds = bizObj.Data; // Not intended, but allowed: ds.Tables.Clear( );

     2.很显然你想防止这样的事情发生,你有四个策略来保护你的内部数据结构不被无意的修改:值类型,恒定类型,接口和包装(模式)

       值类型在通过属性访问时,是数据的拷贝。

       恒定类型如System.String。你可以返回一个字符串或者其它恒定类型。

       System.Dataset类使用了接口IListsource同时也使用了包装对象--DataViewManager类提供了一种访问DataSet的方法。

    3.通过暴露接口来限制一些内部私有数据访问,或者包装对象。

      你希望你的客户可以修改你的内部数据时,应该实现你自己的观察者模式,这样对象可以验证修改或者响应它们。

  • 相关阅读:
    Tomcat原理与实践
    Spring Boot入门与实践
    Docker安装及使用
    JDK源码解析——集合(一)数组 ArrayList
    浅谈mysql底层索引
    微信小程序全局配置知识点
    uniapp全屏高度
    npm node-sass报错
    微信小程序接口配置问题
    微信小程序的设计流程
  • 原文地址:https://www.cnblogs.com/tiantianle/p/4931675.html
Copyright © 2011-2022 走看看