當遇到一個對象A但願使用另一個對象B提供的服務但不能肯定B究竟屬於哪一個類的時候那麼咱們能夠將B提供的服務抽象成一個接口而後讓A持有這個接口的實例來使用服務。對象
接口型模式包括:適配器模式、外觀模式、合成模式與橋接模式繼承
Abstract 和 interface區別:接口
基本區別:Abstract修飾的類能夠有本身的數據成員,也能夠有非Abstract。Interface中只能有靜態的不能修改的數據成員,全部的成員方法都是abstarct。abstract修飾的類是類是一種繼承關係,一個類只能一次繼承關係,可是一個類能夠實現多個接口。在abstract中咱們能夠給方法賦予默認行爲,interface在jdk8之後有default修飾的方法能夠有默認行爲。jdk
本質區別:Abstract是對一個概念本質的理解,而interface是對一個概念類似具備必定功能。jdk8