面向接口编程
开发系统时,主体构架使用接口,接口构成系统的骨架
这样就可以通过更换接口的实现类来更换系统的实现
采用面向接口编程的方式实现步骤如下:
第一步:
抽象出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[ ] )方法,理解该接口的作用,进一步理解接口的作用
思想总结