模板方法
2020-09-21
定义 #
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类,template method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类,template method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。
//老接口
interface OldTarget{
public int bar();
public void foo(int data);
}
//一个实现了老接口的类
class OldClass implements OldTarget{
public int bar(){
//...
}
public void foo(int data){
//...
}
}
//新接口
interface NewTarget{
public void process();
}
//对象适配器
class Adapter implements NewTarget{
private OldTarget oldTarget;
public Adapter(OldTarget oldTarget){this.oldTarget=oldTarget;}
public void process(){
int tmp=bar;
foo(tmp);
}
}
public static void main(String[] args){
OldTarget ot=new OldClass();
//通过该适配器就将一个旧的接口转换成了一个新的接口
NewTarget nt=new Adapter(ot);
nt.process();
}
依赖倒置原则(DIP)
高层模块(稳定)不应该依赖与低层模块(变化),二者都应该依赖与抽象。
抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。
开放封闭原则(OCP)
单一职责原则(SRP)
liskov替换原则(LSP)
接口隔离原则(ISP)
优先使用对象组成,而不是类继承(组合/聚合复用原则)
迪米特法则
DEFAULT_INITIAL_CAPACITY = 1 << 4
:默认初始容量为16,该容量必须为2的倍数DEFAULT_LOAD_FACTOR = 0.75f
:默认的加载因子,可以大于1MAXIMUM_CAPACITY = 1 <<30
:最大容量TREEIFY_THRESHOLD = 8
:由链表转换成树的阈值UNTREEIFY_THRESHOLD = 6
:由树转换成链表的阈值MIN_TREEIFY_CAPACITY = 64