java接口的应用(第29集)

以下内容来自marschen的java4android视频教程

本集主要内容
1.为什么要使用接口。
2.工厂方法模式。

接口其实定义了一种标准。
实现接口。

实例1 如下. 

       一个printer接口, 一个HPPrinter类, 一个CanonPrinter类.还有一个Test类.


//Printer 接口
interface Printer{
	public void open();
	
	public void close();
	
	public void print(String s);
}


//HPPrinter 类
class HPPrinter implements Printer{
	public void open(){
		System.out.println("HP open");
	}
	
	public void close(){
		System.out.println("HP close");
	}
	
	public void print(String s){
		System.out.println("HP print--->"+s );
	}
	
	
}

//CanonPrinter 类
class CanonPrinter implements Printer{
	private void clean(){
		System.out.println("Canon Priter clean");
	}
	
	public void close(){
		this.clean();
		System.out.println("Canon close");
	}
	
	public void open(){
		System.out.println("Canon open");
	}
	
	public void print(String s ){
		System.out.println("Canon Print--->"+s);
		}
}


class Test{
	public static void main(String args[]){
		//根据用户的选择,生成相应的打印机对象 
		//并且向上转型为Printer类型。
		//Printer getPrinter(int flag);
		Printer printer = null;
		
		int flag = 1;
		
		if(flag == 0){
			printer = new HPPrinter();//向上转型
		}
		else if(flag ==1){
			printer = new CanonPrinter();//向上转型
		}
		printer.open();
		printer.print("test");
		printer.close();
		}
}


上面的程序还有很多问题,在Test 类,生成对象的代码重复出现.


下面用


简单静态工厂方法模式.
            Printer     
        |                 |                                        PrinterFactory
HPPrinter    CanonPrinter      


再改动一下上面的代码.


增加一个PrinterFactory类

class PrinterFactory{
	public static Printer getPrinter(int flag){
		Printer printer = null;
		
		if(flag == 0){
			printer = new HPPrinter();//向上转型
		}
		else if(flag ==1){
			printer = new CanonPrinter();//向上转型
		}
		else if(flag ==2){
			printer = new XXXPrinter();//向上转型
		}
		
		return printer;
	}
}

在Test类,这样做.

class Test{
	public static void main(String args[]){
		
		//根据用户的选择,生成相应的打印机对象 
		//并且向上转型为Printer类型。
		
		int flag = 2;
		Printer printer = PrinterFactory.getPrinter(flag);
		printer.open();
		printer.print("test");
		printer.close();
		}
}


所以以再增加打印机.只需要增加一个打印机.如添加XXXPrinter打印机.

//XXXPrinter 类
class XXXPrinter implements Printer{
	public void open(){
		System.out.println("XXX open");
	}
	
	public void close(){
		System.out.println("XXX close"); 
	}
	
	public void print(String s){
		System.out.println("XXX print--->"+s );
	}
	
	

在PrinterFactory里面添加.

else if(flag ==2){
			printer = new XXXPrinter();//向上转型
		}

无需对打印机的调用代码进行修改...






你可能感兴趣的:(java接口的应用(第29集))