使用單例和多例的判斷條件是會不會對類中公共屬性進行修改,如果有修改則用多例。
action中一般會有前端對應的屬性,如果是單例訪問,所有訪問公用一個action中的成員變量和方法,如果多個請求同時對一個屬性進行修改,則會出現數據出錯;而service中公共屬性頂多是dao層中的引用,dao層中公共屬性是對數據庫包裝類或自定義的類的引用,這個引用通常在項目加載啟動時就已經實例化了,訪問只是使用,並未涉及屬性修改,單例模式可節省系統資源。
總結:Action要接收request的參數,因為參數不同所以用多例;
Dao中唯一的狀態就是連接數據庫, 但是這個恰好對大家都是相同的, 所以是單例
Service, 業務邏輯里面的成員變量都是Dao, 既然Dao是無狀態的, 那么Service也可以認為是無狀態的