技术编程|Java知识点梳理( 六 )
迭代器模式是与集合共生共死 。一般来说,我们实现一个容器,就需要同时提供这个容器的迭代器,使用迭代器的好处:封装容器内部的实现细节,对于不同的集合,可以提供统一的遍历方式 , 简化客户端的访问和获取容器内数据 。
文章图片
文章图片
特别需要注意的是 , 在迭代器模式中 , 具体迭代器角色和具体容器角色是耦合在一起的 —— 遍历算法是与容器的内部细节紧密相关的 。为了使客户程序从与具体迭代器角色耦合的困境中脱离出来 , 避免具体迭代器角色的更换给客户程序带来的修改 , 迭代器模式抽象了具体迭代器角色 , 使得客户程序更具一般性和重用性 , 这被称为多态迭代 。
在 Java Collection FrameWork中 , 提供的具体迭代器角色是定义在容器角色中的内部类 , 这样便保护了容器的封装 。但是 , 同时容器也提供了遍历算法接口 , 并且你可以扩展自己的迭代器 。大家考虑一个问题 , 为什么一定要去实现 Iterable 这个接口呢? 为什么不直接实现 Iterator接口呢?
看一下 JDK 中的集合类 , 比如 List一族或者Set一族 , 都是实现了 Iterable 接口 , 但并不直接实现 Iterator 接口 。仔细想一下这么做是有道理的:因为 Iterator接口的核心方法 next() 或者 hasNext() 是依赖于迭代器的当前迭代位置的 。若 Collection 直接实现 Iterator 接口 , 势必导致集合对象中包含当前迭代位置的数据(指针) 。当集合在不同方法间被传递时 , 由于当前迭代位置不可预置 , 那么 next() 方法的结果会变成不可预知 。除非再为 Iterator接口 添加一个 reset() 方法 , 用来重置当前迭代位置 。但即使这样 , Collection 也只能同时存在一个当前迭代位置(不能同时多次迭代同一个序列:必须要等到当前次迭代完成并reset后 , 才能再一次从头迭代) 。而选择实现 Iterable 接口则不然 , 每次调用都会返回一个从头开始计数的迭代器(Iterator) , 因此 , 多个迭代器间是互不干扰的 。16、适配器模式
适配器模式将一个类的接口转换成客户期望的另一个接口 , 让原本不兼容的接口可以合作无间 。也就是说 , 适配器模式用于实现新、老接口之间的转换与适配 , 其魅力在于:不改变原有接口 , 却还能使用新接口的功能 。
文章图片
文章图片
适配器模式主要包含以下四个角色,其内涵分别为:
(1)Target: 客户所期待的接口;
(2)Adaptee: Adapter 所包装的对象 , 即被适配的类(适配者);
(3)Adapter: 一个用于包装不兼容接口的对象的包装类 , 通过包装一个需要适配的对象 , 把原接口转换成目标接口;
(4)Client:客户端;
适配器模式的三个特点:
适配器对象实现原有接口;
适配器对象组合一个实现新接口的对象(这个对象也可以不实现一个接口 , 只是一个单纯的对象);
对适配器原有接口方法的调用被委托给新接口的实例的特定方法 。
文章图片
文章图片
1、模板方法模式
模板方法模式是一种基于继承的代码复用技术 , 是一种类行为型模式 , 其核心在于:定义一个操作中算法的框架 , 而将一些步骤延迟到子类中 。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 。
推荐阅读
- 行业互联网|华为 | 车载以太网物理层及TSN发展现状 与技术趋势
- 技术编程|什么是Plesk虚拟主机控制面板?
- 电池技术|法国发明出世界最快的电极:可将锂电池的密度提高3倍
- 技术编程|人工智能在大视频运维中如何实现CDN硬盘故障预测?
- 电池技术|关于惠州赣锋建设高端聚合物锂电池研发及生产基地建设,赣锋锂业要干大事
- |加速冲刺世界级技术领先地位,大族机器人获1.65亿元A轮融资
- 解码器|苹果 ProRes 视频编解码器获 2020 技术工程艾美奖
- 数据|徐叶润:另类数据技术是驱动资管科技的核心
- 中年|《经济学人》封面文章解析蚂蚁集团:数字技术的崛起代表了金融的未来
- 行业互联网|北科院轻工所技术入选中关村论坛技术交易大会“产业创新领先技术百强项目榜单”
