封装Encapsulation

内部功能抽离

方案

如果有了这个方法

getNode(index:int) -> LinkedListNode

那么 下面的几个方法 实现起来会很方便

get(index:int) -> int
insert(index:int, value:int)

private 方法

为内部服务的方法,本不应该曝光出去

1*2 3
private LinkedListNode getNode(int index) { ...}

封装模型

对象模型

使用 private

使用 private 可对属性和方法进行访问保护

禁止外界直接访问属性和方法

private 的仅供内部使用

封装

外界只能看到 public 对外暴露的

不知道 也不该知道 里面有什么

不管 也不该管 里面怎么搞的

内部优化

可以添加不影响外部的 private 属性或方法

样例

1 2 3
public int lastValue(){ return getNode(size() - 1).getValue();}
问题

为了求 size 已经跑到最后一个节点了,

getNode 时又跑了一遍

优化

1 2 3+4 5 6*7 8 9 10 11+12 13 14
public class LinkedList { ... private int size; ... public int lastValue() { return getNode(size - 1).getValue(); } ... public void add(int value) { ... size ++; } ...}

ZZAX 微信公众

文档一更新,立刻告诉你