(以打印机为例子)
结构:
有一个主类:定义一个
一个接口:用来声明共同的方法的
3个类:
创造打印机的类:
宏碁的打印机类,继承了接口:
打印机的类:里面有三个方法(输入,更新,和输出)
实现:
实现了输入第一台打印机的时候,调用创建打印机的类中的方法,返回创建宏碁的类的对象赋给接口的引用。如果这个引用不空,则调用pc类的构造函数把创建的打印机赋给自身的打印机对象,把这个Pc的对象调用它自身的输入数据这个方法,输入MAX个数据。调用output这个方法的时候,输出这个数组的最大值。
目的:
把打印机这个东西封装在计算机里面,通过接口来获取对象。最后用计算机这个对象来操作打印机。
//有多台打印机
//有一台电脑
//打印工厂
//测试类
import java.util.Scanner;
public class PrintTest {
public static void main( String[] args ){
//测试
Scanner sc = new Scanner( System.in );
System.out.print( "请选择你要的打印机: " );
int op = sc.nextInt();
Printer out = FactoryPrint.getPrinter( op );
Pc pc;
if( out!=null ){
pc = new Pc( out );
pc.getData();
pc.output(); //输出数据
}
}
}
//职能: 创造打印机
class FactoryPrint{
public static Printer getPrinter( int i ){
Printer out = null;
switch( i ){
case 1:
out = new AcerPrinter();
break;
}
return out;
}
}
//输出器
interface Printer{
public void print( int[] ary ); //抽象方法
}
class AcerPrinter implements Printer{
public void print( int[] ary ){
int max = ary[ 0 ];
for( int i=1; i<ary.length; i++ ){
if( max < ary[i] )
max = ary[i];
}
System.out.println( "max = "+ max );
}
}
class Pc {
private Printer out; //打印机
final int MAX = 5;
int[] data = new int[ MAX ]; //把数据存到这里
public Pc( Printer out ){
this.out = out;
}
//输入数据
public void getData( ){
Scanner sc = new Scanner( System.in );
for( int i=0; i<MAX; i++ ){
data[i] = sc.nextInt();
}
}
public void updateData(){
//没有实现
}
public void output(){
out.print( data );
}
}