設計模式之強大的接口適配器模式,繼承Thread or 實現Runnable?

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

相關文章
相關標籤/搜索