已知一个类实现了某种功能,须要让这个类能够被接口可用。java
能够经过对该类进行扩展,并实现统一接口,能够完成一个适配器模式。大部分的设计模式都是经过接口来表达,接口中的域字段默认是static和final的。设计模式
经过适配器模式,咱们能够在任何现有类的基础上添加新的接口,因此这意味着让方法接受接口类型,是一种让任何类均可以对该方法进行适配的方式。以下EnglishTeacher自己只有teachEnglish方法,可是Nestty只接受IGeneralTeacher接口,为了让英语老师继续能够教课,能够经过增长适配器的方法进行原来类的复用。这就能够看到接口而不是类的强大之处。this
//TODO demo设计
public class NesttyMain { IGeneralTeacher generalTeacher; interface IGeneralTeacher{ public void doTeach(); } static class EnglishTeacher{ public void teachEnglish(){ System.out.println("teach English"); } } static class AdaptedEnglishTeacher extends EnglishTeacher implements IGeneralTeacher{ public void doTeach() { teachEnglish(); } } NesttyMain(IGeneralTeacher generalTeacher){ this.generalTeacher = generalTeacher; } public static void main(String[] args){ NesttyMain nm = new NesttyMain(new AdaptedEnglishTeacher()); nm.generalTeacher.doTeach(); } }
基于设计模式来讲,实现Runnable接口能够继承另一个不一样的类,而继承Thread则不能够。能够看到区别了吧?code