设计模式`相关文章,用于整理网络中对应的设计模式的一些解读。

面向对象,是对事物属性与行为的封装,方法,指的就是行为。模板方法,显而易见是说某个方法充当了模板的作用,其充分利用了抽象类虚实结合的特性,虚部抽象预留,实部固定延续,以达到将某种固有行为延续至子类的目的。反观接口,则达不到这种目的。要搞明白模板方法,首先我们从接口与抽象类的区别切入。

以下文章内容来源:微信公众号(Java知音)文章,设计模式是什么鬼(模板方法)

模板方法

汽车上的接口最常见的就是这几个了:点烟器,USB,AUX等等,很明显这些都是接口,它们都预留了某种标准,暴露在系统外部,并与外设对接。就拿点烟器接口来说吧,它原本是专门用于给点烟器供电的,后来由于这个接口在汽车上的通用性,于是衍生出了各种外部设备,只要是符合这个标准size的,带正负极簧片的,直流12V的,那就可以使用,比如导航、行车记录仪、吸尘器什么的,以及其他各种车载电子设备。

点烟器接口

1
2
3
4
public interface CigarLighterInterface {//点烟器接口
//供电方法,16V直流电
public void electrifyDC16V();
}

GPS

1
2
3
4
5
6
7
8
9
public class GPS implements CigarLighterInterface {
//导航的实现
@Override
public void electrifyDC16V() {
System.out.println("连接卫星");
System.out.println("定位。。。");
}

}

CigarLighter

1
2
3
4
5
6
7
8
9
10
11
12
public class CigarLighter implements CigarLighterInterface {
//点烟器的实现
@Override
public void electrifyDC16V() {
int time = 1000;
while(--time>0){
System.out.println("加热电炉丝");
}
System.out.println("点烟器弹出");
}

}

对于点烟器接口来说,它根本不在乎也不知道对接的外设是什么鬼,它只是定义了一种规范,一种标准,只要符合的都可以对接。再比如USB接口的应用更加广泛,外设更是应有尽有。

当然大部分情况我们使用接口会多于抽象类,因为接口灵活啊,抽象类不允许多继承啊等等,其实我们还是要看应用场景,在某种无规矩不成方圆,或者规范比较明确,的情况下抽象类的应用是有必要的,世间万物没有最好的,只有最合适的。