开发打印机市场上有彩色、黑白喷墨打印机,它们打印的纸张
开发打印机
市场上有彩色、黑白喷墨打印机,它们打印的纸张类型为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();
}
}