您的位置:首页 > 编程语言 > Java开发

java接口的应用(第29集)

2013-04-11 13:04 253 查看
以下内容来自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();//向上转型
}


无需对打印机的调用代码进行修改...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: