Dotcpp  /  试卷列表  /  Java  /  题目 8056

开发打印机市场上有彩色、黑白喷墨打印机,它们打印的纸张

开发打印机

市场上有彩色、黑白喷墨打印机,它们打印的纸张类型为A4和B5,打印机厂商要兼容市场上的墨盒、纸张。

分析:用面向接口编程的方式开发

(1)制定墨盒、纸张的约定或标准

(2)打印机厂商使用墨盒、纸张的标准开发打印机

(3)其他厂商按照墨盒、纸张的标准生产墨盒、纸张

答案
// ============== (1) 制定墨盒、纸张的标准(接口) ==============

// 墨盒标准:所有墨盒必须能"提供颜色"
interface InkBox {
    String getColor();   // 返回颜色名称
}

// 纸张标准:所有纸张必须能"提供大小"
interface Paper {
    String getSize();    // 返回纸张大小
}

// ============== (2) 打印机厂商:使用墨盒、纸张的标准开发打印机 ==============

class Printer {
    private InkBox inkBox;   // 打印机依赖墨盒接口
    private Paper paper;     // 打印机依赖纸张接口

    public Printer(InkBox inkBox, Paper paper) {
        this.inkBox = inkBox;
        this.paper = paper;
    }

    // 打印方法
    public void print() {
        System.out.println("使用" + inkBox.getColor() + "墨盒,在" + paper.getSize() + "纸张上打印");
    }
}

// ============== (3) 其他厂商:按照墨盒、纸张的标准生产墨盒、纸张 ==============

// 彩色墨盒
class ColorInkBox implements InkBox {
    @Override
    public String getColor() {
        return "彩色";
    }
}

// 黑白墨盒
class BlackInkBox implements InkBox {
    @Override
    public String getColor() {
        return "黑白";
    }
}

// A4 纸张
class A4Paper implements Paper {
    @Override
    public String getSize() {
        return "A4";
    }
}

// B5 纸张
class B5Paper implements Paper {
    @Override
    public String getSize() {
        return "B5";
    }
}

// ============== 测试主类 ==============

public class TestPrinter {
    public static void main(String[] args) {
        // 组合 1:彩色墨盒 + A4 纸张
        Printer p1 = new Printer(new ColorInkBox(), new A4Paper());
        p1.print();

        // 组合 2:彩色墨盒 + B5 纸张
        Printer p2 = new Printer(new ColorInkBox(), new B5Paper());
        p2.print();

        // 组合 3:黑白墨盒 + A4 纸张
        Printer p3 = new Printer(new BlackInkBox(), new A4Paper());
        p3.print();

        // 组合 4:黑白墨盒 + B5 纸张
        Printer p4 = new Printer(new BlackInkBox(), new B5Paper());
        p4.print();
    }
}

题目信息

题号:8056
题型:简答题
知识点:Java
难度:普通