<基类/子类>结构的接口(卡榫sun函数):

卡榫函数就是接合两个东西的接口,如果两个东西于不同的时间出现,则一方会预留虚空.给予另一边于未来时刻能以实体来填充该空间。两者虚实相依,就密合起来了.设计优良的卡榫,可以让实体易于新陈代谢,抽换自如(plug and play,俗称pnp).

实际上就是设计模式里面强调的分离出变与不变,在语法上讲是多态的应用.

变与不变的分离是设计卡榫函数及应用框架之基本原则和手艺.

分离出变与不变后,就可以将不变的部分写在父类(super class)里面,而变的部分写在子类(subclass)里面.

卡榫函数的java实现:

在java里面,使用抽象(abstract)函数或可覆盖(overridable)函数来实现卡榫函数.

复习在C++,在C++里面可以用虚函数或者纯虚函数来实现卡榫函数.

IOC机制与Default函数:

IOC: Inversion of control 控制反转,IOC机制源自于OO语言(如C++等)的类别继承体系,例如C++语言中,基类的函数可以主动调用子类的函数,这就是典型的IOC机制.

基类与子类之间,主控权是在基类手上,透过Hook函数来调用子类.

通常基类是撰写在先,而子类则撰写在后,这种前辈拥有主动权,进而控制后辈之情形,就通称为控制反转. 也

Default函数:基类的重要功能是提供默认(预设)行为.这些默认函数可让子类来继承(或调用),也就是说基类提供了基本的行为,子类在这个行为的基础上再添加父类无法提供的默认行为.

abstract class Sharp{

void drawBackGround(){//default行为

System.out.println("drawBackground");

}

void draw(){//

drawBackGround();

drawSharp();//hook函数,控制反转,父类对子类说你别来调用我,我来调用你.

}

abstract void drawSharp();

}

class DerivedSharp extends Sharp{

@Override

void drawSharp() {

// TODO Auto-generated method stub

System.out.println("drawDerivedShap");

}

}

public class test3 {

public static void main(String[] args){

Sharp b = new DerivedSharp();

b.draw();

}

}

results matching ""

    No results matching ""