2013-05-11 31 views
0

我是jsf和spring概念的新手。
我有一個訪問bean類中自定義方法的xhtml頁面。
我已經使用委託(服務類)和道類。
我的問題是來自bean類應該調用委託接口方法還是委託實現方法?如何訪問jsf bean中的委託方法

這個項目的結構如下:

  • XHTML頁面
  • 豆抽象類
  • bean實現類(菜豆擴展抽象類)
  • 委託接口類
  • 委託實現類
  • dao接口類
  • DAO實現類
+0

發佈代碼的相關片段會使問題變得更容易理解,但是從你寫的內容來看,如果你想調用一個類,因爲它實現了一些接口,那麼在你的聲明中使用這個接口。這使設計更簡潔,並且[依賴注入](http://en.wikipedia.org/wiki/Dependency_injection)更加簡單。 – dratewka 2013-05-11 08:26:10

回答

1

我應該叫委託界面方法或委託的實現方法?

當然可以都做,但是依靠在界面上你避免對象之間緊耦合

將接口看作是一般合同及其具體實現,作爲包含合同所有細節的實例。

你可以想象一個簡單的案例,這是一個合同服務。你可以寫一個接口來強制所有的實現只遵循一個方法: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; 
    ... 
} 

有了這樣的設計具體實現並不重要,並且將通過依賴注入正確的實現來處理。至關重要的一點是,你並不想用這種方法來實現設計,你可以很容易地用你的實現替換你的實現,因爲你的代碼是鬆耦合

+0

非常感謝!這解決了我的問題....再次感謝,下次也會加入代碼片段..... – user2279658 2013-05-12 16:18:48

+0

不客氣!順便說一句,你總是可以接受最能幫助你解決問題的答案。 – skuntsel 2013-05-12 16:35:55