将多个类对象交给工厂类来生成的设计方式被称为简单工厂模式。

public interface Output {

    public void out();
   
    public void getDate(String msg);
}

public class OutputFactory {

    public Output getOutput(){
        return new BetterPrinter();
    }
}

public class Printer implements Output {
   
    private String[] printData = new String[100];
   
    private int dataNum = 0;
   
    public void out() {
        // TODO Auto-generated method stub
        while(dataNum > 0){
            System.out.println("打印机打印:" + printData[0]);
            System.arraycopy(printData, 1, printData, 0, --dataNum);
        }
    }

    public void getDate(String msg) {
        // TODO Auto-generated method stub
        if(dataNum >= 100){
            System.out.println("输出队列已满,添加失败");
        }
        else{
            printData[dataNum++] = msg;
        }
    }

}

public class BetterPrinter implements Output {
   
    private String[] printData = new String[100*2];
   
    private int dataNum = 0;

    public void getDate(String msg) {
        // TODO Auto-generated method stub
        if(dataNum >= 100*2){
            System.out.println("输出队列已满,添加失败");
        }
        else{
            printData[dataNum++] = msg;
        }
    }

    public void out() {
        // TODO Auto-generated method stub
        while(dataNum > 0){
            System.out.println("打印机打印:" + printData[0]);
            System.arraycopy(printData, 1, printData, 0, --dataNum);
        }
    }

}


public class Computer {

    private Output out;

    public Computer(Output out) {
        super();
        this.out = out;
    }
   
    public void keyIn(String msg){
        out.getDate(msg);
    }
   
    public void print(){
        out.out();
    }
   
    public static void main(String[] args){
        OutputFactory of = new OutputFactory();
        Computer c = new Computer(of.getOutput());
        c.keyIn("ABC");
        c.keyIn("111");
        c.print();
    }
}