1. 程式人生 > >介面和實現的命名方式

介面和實現的命名方式

在看別人的spring專案的時候,發現所有的service都是一個介面和一個或者多個實現,如果說有多個實現定義一個介面,也說得過去,只有一個介面,為什麼要定義成介面呢?



介面(interface)和實現(Implementation)是java多型的一個實現方式,一個介面可以有多個實現,一個實現類可以實現多個介面,這個概念就不具體講了。

仔細想想,service是什麼,翻譯過來是服務的意思,既然是服務,只需要讓使用者知道服務的定義就好,沒有必要把實現暴露出來,這點可以解釋為什麼即使只有一個實現也要寫成介面的形式。

另外一個原因,就是spring的裝配順序,查詢一個bean時優先類名、bean名稱,所以宣告注入的service時,只需要宣告介面名稱,示例名稱只要按照實現的service預設的,spring會自動查詢到對應的實現Bean.

所以基於以上的原則,寫一個service類時,要先定義一個介面,再實現這個介面,注入bean時,只要注入介面介面,例如:

介面:

public interface IFly {

    void fly();
}


實現:

@Service
public class FlyImpl implements IFly{


    @Override
    public void fly() {
        System.out.println("就是這樣飛");
    }
}

注入bean:
    @Autowired
    private IFly flyImpl;