亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當您想將一些通用功能應用于某些特定方法時使用的設計模式?

當您想將一些通用功能應用于某些特定方法時使用的設計模式?

慕碼人2483693 2023-02-16 16:01:35
我正在嘗試找出一種設計模式(如果存在的話)用于我將在一堆類中重新執行某些功能的情況。以下是我面臨的問題的(簡化)概述:我有一些 Java 代碼來創建、更新、刪除Student對象、Professor對象和Staff對象。每次創建、刪除或更新此類對象時,我都想提取有關受影響對象的一些信息(例如姓名、年齡、ID)并通知外部服務。所以像:class StudentDAO {   public Student createStudent(Student studentToCreate) {       jdbcTemplate.update(INSERT_SQL, .....);       //===> extract some info of the student       //let external service know a student was created....   }   public Student deleteStudent(Student studentToDelete) {       jdbcTemplate.update(DELETE_SQL, .....);       //===> extract some info of the student       //let external service know a student was deleted....   }   //same thing for update}class ProfessortDAO {   public Professor createProfessor(Professor professorToCreate) {       jdbcTemplate.update(INSERT_SQL, .....);       //===> extract some info of the professor       //let external service know a Professor was created....   }   public Student deleteProfessor(Professor professorToDelete) {       jdbcTemplate.update(DELETE_SQL, .....);       //===> extract some info of the professor       //let external service know a professor was deleted....   }   //same thing for update}//repeat for Staff該示例有點做作,但假設Student, Professor,Staff沒有共同的超類型。有沒有一種方法可以實現此功能,而無需復制和粘貼用于提取信息的邏輯并將其發送到所有 DAO 類的 CREATE、DELETE、UPDATE 方法中?
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

您應該搜索通用存儲庫。您可以在這里了解更多信息:


https://www.youtube.com/results?search_query=generic+repository+java


示例代碼:


class Reposiory<T> {

   public T create(T Create) {

       jdbcTemplate.update(INSERT_SQL, .....);

   }

   public T delete(T Delete) {

       jdbcTemplate.update(DELETE_SQL, .....);

   }


}


查看完整回答
反對 回復 2023-02-16
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

沒有太多信息可以繼續,但您是否考慮過使用generics特定類型并實施 an來定義您希望從每種類型的個人訪問的interface公共信息?(phone, name, id)

您還應該能夠將操作(DELETE, ADD, UPDATE)作為參數傳遞。我建議enum為此使用 an 。


查看完整回答
反對 回復 2023-02-16
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

創建 ReportExternalService 接口并添加關鍵屬性,如果對象需要通知,則實現此接口。

創建一個以 ReportExternalService 為參數的方法,并使用 key 向外部服務報告。!


查看完整回答
反對 回復 2023-02-16
  • 3 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號