面向接口编程
开发系统时,主体构架使用接口,接口构成系统的骨架
这样就可以通过更换接口的实现类来更换系统的实现
采用面向接口编程的方式实现步骤如下:
第一步:
抽象出Java接口
分析:黑白、彩色打印机都存在一个共同的方法特征:print
黑白、彩色打印机对print方法有各自不同的实现
结论:抽象出Java接口PrinterFace,在其中定义方法print
具体实现:
public interface PrinterFace {
public void print(String content);
}
第二步:
实现Java接口
分析:已经抽象出Java接口PrinterFace,并在其中定义了print方法
黑白、彩色打印机对print方法有各自不同的实现
结论:黑白、彩色打印机都实现PrinterFace接口,各自实现print方法
具体实现:
public class ColorPrinter implements PrinterFace {
public void print(String content) {
System.out.println("彩色打印:");
System.out.println(content);
}
}
public class BlackPrinter implements PrinterFace {
public void print(String content) {
System.out.println("黑白打印:");
System.out.println(content);
}
}
第三步:
使用Java接口
分析:主体架构使用接口,让接口构成系统的骨架
结论:更换实现接口的类就可以更换系统的实现
具体实现:
public class School3 implements Introduceable{
private PrinterFace printer; //打印机
public void setPrinter(PrinterFace p) {
this.printer = p;
}
public String detail() {
return "这里是中心";
}
public void print(Introduceable intro){
printer.print(intro.detail());
}
}
public class Test {
public static void main(String[] args) {
// 创建中心实例
School3 school=new School3();
//为该中心配备黑白打印机
school.setPrinter(new BlackPrinter());
school.print(school);
//为该中心配备彩色打印机
school.setPrinter(new ColorPrinter());
school.print(school);
}
}
接口代码示例
//no.1 Student类
package com.yg.www;
public class Student implements Printer {
private static String name;
private static int age;
public static void detail() {
System.out.println("学员的姓名为:" + name + "年龄为:" + age + "。");
}
@Override
public void extent() {
System.out.println("具有良好的可拓展性和维护性");
}
}
//no.2 Printer接口
package com.yg.www;
public interface Printer {
void extent();
}
//no.3 StudentTest测试类
package com.yg2.www;
public class StudentTest {
public static void main(String[] args) {
Student s=new Student();
s.extent();
}
}
//no.4
package com.yg.www;
public interface Constants {
void max();
void min();
package com.yg2.www;
public class ConstantsTest {
public static void main(String[] args) {
Cong c=new Cong();
c.max();
c.min();
}
}
package com.yg.www;
public class Cong implements Constants {
public static final int Max=12345;
public static final int Min=1234;
@Override
public void max() {
System.out.println("max的值为:"+Max);
}
@Override
public void min() {
System.out.println("min的值为:"+Min);
System.out.print(Max-Min);
}
}
package com.yg.www;
public class Course {
private String name;
private String price;
public Course(String name, String price) {
super();
this.name = name;
this.price = price;
}
int [][] a= {};
}
}
Comparable接口
Comparable接口中定义了比较方法,compareTo,返回值为int
当int值为正数,表示大于;为负数,表示小于;为0,表示等于
API 中很多类实现了该接口,很多方法借助该接口
通过使用Arrays.short( Object[ ] )方法,理解该接口的作用,进一步理解接口的作用
思想总结