面向接口编程
实现打印机的功能:
1.打印机包含墨盒和纸张
2.墨盒可以自定义颜色
3.纸张可以自定义大小
测试
package printer;
// 组装打印机
public class Demo {
public static void main(String[] args) {
// 创建打印机
Printer printer = new Printer();
// 墨盒颜色
printer.setMyColor("彩色");
// 纸张大小
printer.setMySize("A8");
// 准备墨盒
Inkbox inkbox = new ColorInkbox();
// 准备纸张
Paper paper = new PaperSize();
// 将墨盒和纸张装进打印机
printer.setInkbox(inkbox);
printer.setPaper(paper);
// 打印机使用
printer.myPaper();
}
}
打印机属性
package printer;
// 打印机属性
public class Printer {
// 墨盒
private Inkbox inkbox;
// 纸张
private Paper paper;
// 墨盒颜色
private String myColor;
// 纸张大小
private String mySize;
public void myPaper(){
System.out.println("我使用"+inkbox.color(myColor)+"在"+paper.size(mySize)+"上打印。");
}
public Inkbox getInkbox() {
return inkbox;
}
public void setInkbox(Inkbox inkbox) {
this.inkbox = inkbox;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public String getMyColor() {
return myColor;
}
public void setMyColor(String myColor) {
this.myColor = myColor;
}
public String getMySize() {
return mySize;
}
public void setMySize(String mySize) {
this.mySize = mySize;
}
public Printer() {
super();
// TODO Auto-generated constructor stub
}
public Printer(Inkbox inkbox, Paper paper, String myColor, String mySize) {
super();
this.inkbox = inkbox;
this.paper = paper;
this.myColor = myColor;
this.mySize = mySize;
}
public String toString() {
return "Printer [inkbox=" + inkbox + ", paper=" + paper + ", myColor="
+ myColor + ", mySize=" + mySize + "]";
}
}
墨盒
package printer;
public interface Inkbox {
// 准备墨盒
public String color(String color);
}
墨盒颜色
package printer;
public class ColorInkbox implements Inkbox {
// 墨盒颜色
public String color(String color) {
return color+"墨盒";
}
}
纸张
package printer;
public interface Paper {
// 准备纸张
public String size(String size);
}
纸张大小
package printer;
public class PaperSize implements Paper {
// 纸张大小
public String size(String size) {
return size+"纸张";
}
}