已知一個類實現了某種功能,須要讓這個類能夠被接口可用。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