此篇是对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.通过暴露接口来限制一些内部私有数据访问,或者包装对象。

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

最新文章

  1. MySQL JDBC/MyBatis Stream方式读取SELECT超大结果集
  2. Hessian 初探
  3. 关于MySQL Connector/C++那点事儿
  4. jQuery 动态绑定的点击事件
  5. spring util命名空间
  6. Elasticsearch 5.0 _source field的简单认识
  7. 关于ajax后台success传来json数据的问题
  8. POJ-2240 Arbitrage---判断正环+枚举
  9. Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行
  10. Kubernetes集群调度器原理剖析及思考
  11. Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /
  12. 微信小程序托管 推广 开发 就找北京动点软件
  13. ct
  14. .net framework 4.5 +steeltoe+ springcloud(二) 实现服务发现与调用功能
  15. jquery异步ajax超大长度base64图片长字段数据传输问题解决办法和php后台处理办法
  16. JAVA 利用Dom4j实现英语六级词汇查询 含演示地址
  17. .net获取当前url各种属性(文件名、参数、域名、端口等)的方法(转)
  18. 使用镶嵌数据集 MosaicDataSet管理不同分辨率影像数据
  19. js里面函数的内部属性
  20. Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效

热门文章

  1. 17 java 存在的问题(转)
  2. sqlite数据库操作详细介绍 增删改查,游标
  3. 在Eclipse中运行Nutch2.3
  4. Yii 2.0: yii2-highcharts-widget创建饼状图
  5. Oracle 10.2数据库管理员指南-27章
  6. 鼠标点击变色 lvha
  7. Verilog 模块参数重定义(转)
  8. 单片机(MCU)使用常用名字解释
  9. 在FMX中实现PostMessage的方法
  10. .Net XML操作 <第二篇>