面向接口
1.关于接口的理解。
接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体;
第二类是对一个体某一方面的抽象,即形成一个抽象面;
一个体有可能有多个抽象面。
抽象体与抽象面是有区别的。
举个例子:三角插头只能插在三角插座上,不能插在两角插座上,这就是一个接口,是规范,是标准,插头的生产厂商只生产能插上的插头,这就是规范,按照一个标准来生产
1:首先创建两个接口:(可以理解为插座)
接口一:
package Dayin;
//墨盒的接口——理解为插座
public interface Box {
String color();
}
接口二:
package Dayin;
//纸张的接口
public interface Paper {
String type();
}
2:两个接口创建完毕
就该写接口的实现类了(可以理解为插头)
这是两个纸张的实现类:
纸张一:
package Dayin;
public class A4 implements Paper {
public String type() {
return "A4纸张";
}
}
纸张二:
package Dayin;
public class B5 implements Paper {
public String type() {
return"B5纸张";
}
}
3:然后就是两个墨盒的实现类:
墨盒一:
package Dayin;
public class Box_black implements Box {
//黑色墨盒的实现类
public String color() {
return"黑色墨盒";
}
}
墨盒二:
package Dayin;
public class Box_cai implements Box {
//彩色墨盒的实现类——理解为插头
public String color() {
return"彩色墨盒";
}
}
4:这是打印类:
package Dayin;
public class printer {
Paper Paper;
Box Box;
//打印的类
public printer(Paper Paper,Box Box) {
this.Paper = Paper;
this.Box = Box;
}
public String print() {
return "使用"+Box.color()+"在"+Paper.type()+"打印";
}
}
5:这个是测试结果:
package Dayin;
import javassist.expr.NewArray;
@SuppressWarnings("unused")
public class Test {
public static void main(String[] args) {
//使用黑色墨盒在A4纸张的大小打印
printer printer = new printer (new A4(),new Box_black() );
System.out.println(printer.print());
//使用彩色墨盒在B5纸张的大小打印
printer pr = new printer(new B5(), new Box_cai());
System.out.println(pr.print());
}
}
好了,就是这样的,很好理解的,插座插头理解法——