zoukankan      html  css  js  c++  java
  • 实现模式读书笔记五

      在将容器暴露给外界使用的时候,需要考虑外界是否可以对容器进行修改。比如Iterable无法保证容器中的数据不被修改,外界可以直接调用它的remove方法进行修改,而不通知容器所有者,这样会出现问题。解决办法之一就是返回一个安全拷贝。

      一、不可变的容器

      当只想把容器暴露给外界而不希望被修改时,除了安全拷贝外,还可以创建不可修改的容器,当容器的元素被外界修改时,程序会throw exception。

      二、容器的继承和委派

      有时候我们可能需要继承一个容器类。比如新建一个书籍列表的类Library,我们的目的是给他提供类似集合一样的增删改查操作。一个很直接的想法是让它继承ArrayList。这种操作实现了Library的add、remove、迭代以及其他容器操作,但是这种方式会带来一些问题。比如一般我们不需要ArrayList的toArray操作,但是如何避免用户调用呢,总不能把所有不需要的方法都加以实现并抛出UnsupportedOperationException来取消继承。这里可以使用委派来实现这种操作。使用这种方式可以只暴露一些需要的方法。

     
  • 相关阅读:
    springboot的整合篇-springmvc,mybatis,数据库等
    快速搭建springboot工程
    Git常用命令
    SpringBoot整合通用Mapper
    SpringBoot项目部署
    实例化调用和静态方式调用的区别
    CentOS系统安装PHP7.3
    CentOS7部署LNMP环境
    Apache和Nginx的区别
    Linux系统下卸载MySQL
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/14339207.html
Copyright © 2011-2022 走看看