jdk1.8的新特性之一是接口可以写默认实现方法。正好可以用在模板方法模式之上,之前一直使用抽象类来实现的。(该特性不仅限使用模板方法模式)。
1、car的类
package com.zc.jdk8;
/**
* Created by Administrator on 2017/5/17.
*/
public interface Car {
/**
* Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法
*/
default void create(){
System.out.println("create wheel start !");
createWheel();
System.out.println("create wheel start !");
System.out.println("create engine start !");
createEngine();
System.out.println("create engine start !");
System.out.println("create frame start !");
createFrame();
System.out.println("create frame start !");
}
/**
* 造轮子
*/
public void createWheel();
/**
* 造发动机
*/
public void createEngine();
/**
* 造车架子
*/
public void createFrame();
}
2、测试main函数TestMain
package com.zc.jdk8;
/**
* Created by Administrator on 2017/5/17.
*/
public class TestMain {
public static void main(String[] args) {
/**
* 创建个小轿车
*/
Car smallCar = new Car() {
@Override
public void createWheel() {
System.out.println("create Wheel small Car......");
}
@Override
public void createEngine() {
System.out.println("create Engine small Car......");
}
@Override
public void createFrame() {
System.out.println("create Frame small Car......");
}
};
smallCar.create();
/**
* 造个大轿车
*/
Car bigCar = new Car() {
@Override
public void createWheel() {
System.out.println("create Wheel big Car......");
}
@Override
public void createEngine() {
System.out.println("create Engine big Car......");
}
@Override
public void createFrame() {
System.out.println("create Frame big Car......");
}
};
bigCar.create();
}
}
上面创建了两个类型的车,一个小车、一个大卡车。
3、运行结果: