我是jsf和spring概念的新手。
我有一個訪問bean類中自定義方法的xhtml頁面。
我已經使用委託(服務類)和道類。
我的問題是來自bean類應該調用委託接口方法還是委託實現方法?如何訪問jsf bean中的委託方法
這個項目的結構如下:
- XHTML頁面
- 豆抽象類
- bean實現類(菜豆擴展抽象類)
- 委託接口類
- 委託實現類
- dao接口類
- DAO實現類
我是jsf和spring概念的新手。
我有一個訪問bean類中自定義方法的xhtml頁面。
我已經使用委託(服務類)和道類。
我的問題是來自bean類應該調用委託接口方法還是委託實現方法?如何訪問jsf bean中的委託方法
這個項目的結構如下:
我應該叫委託界面方法或委託的實現方法?
您當然可以都做,但是依靠在界面上你避免對象之間緊耦合。
將接口看作是一般合同及其具體實現,作爲包含合同所有細節的實例。
你可以想象一個簡單的案例,這是一個合同服務。你可以寫一個接口來強制所有的實現只遵循一個方法:getAllContacts
。所以,你的界面將是:
public interface ContactBookInterface {
public List<Contact> getAllContacts();
}
接口不被打擾對這些信息的數據是如何存儲在內部,或者它從何而來。所有這些細節都存在於實現中。你可以考慮兩種實現方式:
public class ContactBookService implements ContactBookInterface {
private ContactDAO contactDAO;
...
public List<Contact> getAllContacts() {
return contactDAO.findAll();
}
}
和
public class ContactBookMockService implements ContactBookInterface {
private List<Contact> contacts;
public ContactBookMockService() {
contacts = populateMockContacts();
}
...
public List<Contact> getAllContacts() {
return contacts;
}
}
現在,從程序,你可以有以下託管bean點:
@ManagedBean
...
public void ContactsBean {
private ContactBookInterface cbi;
...
}
有了這樣的設計具體實現並不重要,並且將通過依賴注入正確的實現來處理。至關重要的一點是,你並不想用這種方法來實現設計,你可以很容易地用你的實現替換你的實現,因爲你的代碼是鬆耦合。
非常感謝!這解決了我的問題....再次感謝,下次也會加入代碼片段..... – user2279658 2013-05-12 16:18:48
不客氣!順便說一句,你總是可以接受最能幫助你解決問題的答案。 – skuntsel 2013-05-12 16:35:55
發佈代碼的相關片段會使問題變得更容易理解,但是從你寫的內容來看,如果你想調用一個類,因爲它實現了一些接口,那麼在你的聲明中使用這個接口。這使設計更簡潔,並且[依賴注入](http://en.wikipedia.org/wiki/Dependency_injection)更加簡單。 – dratewka 2013-05-11 08:26:10