您的位置:首页 > 其它

设计模式_工厂模式

2016-07-27 19:01 253 查看
(以打印机为例子)

结构:

有一个主类:定义一个

一个接口:用来声明共同的方法的

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 );
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: