19.接口的应用
- 为什么要使用接口?
- 工厂方法模式
- 使用了接口,静态函数,向上转型
- 思路:使用new来调用构造函数的代码,把他封装在工厂类当中
- 对于使用者来讲,只需要调用和修改工厂就可以了
interface Printer{
publicvoid open();
publicvoid close();
publicvoid print(String s);
}
classHPPrinter implements Printer{
publicvoid open(){
System.out.println("HP open");
}
publicvoid close(){
System.out.println("HP close");
}
publicvoid print(String s){
System.out.println("HP print---->"+ s);
}
}
classCanonPrinter implements Printer{
privatevoid clean(){
System.out.println("clean");
}
publicvoid close(){
this.clean();
System.out.println("Canon close");
}
publicvoid open(){
System.out.println("Canon open");
}
publicvoid print(String s){
System.out.println("Canon print---->"+ s);
}
}
classPrinterFactory{
publicstaticPrinter getPrinter(int flag){
Printer printer = null;
if(flag ==0){
printer =newHPPrinter();
}
elseif(flag ==1){
printer =newCanonPrinter();
}
return printer;
}
}
classTest{
publicstaticvoid main(String args []){
//根据用户的选择,生成相应的打印机对象
//并且向上转型为Printer类型
//Printer getPrinter(int flag)
int flag =0;
Printer printer =PrinterFactory.getPrinter(flag);
printer.open();
printer.print("test");
printer.close();
}
}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
HP open
HP print---->test
HP close